में किसी तत्व की स्थिति का निर्धारण करें मेरे पास एक IQueryable है जिसे कुछ शर्त द्वारा आदेश दिया गया है। अब मैं उस IQueryable में किसी विशेष तत्व की स्थिति जानना चाहता हूं। क्या यह प्राप्त करने के लिए एक linq अभिव्यक्ति है। कहते हैं, उदाहरण के लिए वहाँ IQueryable में 10 तत्वों मैं संख्या प्राप्त करना चाहते हैं और 6 तत्व एक शर्त से मेल खाता है, 6.एक IQueryable
उत्तर
सबसे पहले अपने सूचकांक के साथ एक आइटम चुनें, फिर आइटम फिल्टर, और अंत में मूल सूचकांक निकालें:
var result = orderedList
.Select((x, i) => new { Item = x, Index = i })
.Where(itemWithIndex => itemWithIndex.Item.StartsWith("g"))
.FirstOrDefault();
int index= -1;
if (result != null)
index = result.Index;
टेस्ट बिस्तर:
class Program
{
static void Main(string[] args)
{
var orderedList = new List<string>
{
"foo", "bar", "baz", "qux", "quux",
"corge", "grault", "garply", "waldo",
"fred", "plugh", "xyzzy", "thud"
}.OrderBy(x => x);
// bar, baz, corge, foo, fred, garply, grault,
// plugh, quux, qux, thud, waldo, xyzzy
// Find the index of the first element beginning with 'g'.
var result = orderedList
.Select((x, i) => new { Item = x, Index = i })
.Where(itemWithIndex => itemWithIndex.Item.StartsWith("g"))
.FirstOrDefault();
int index= -1;
if (result != null)
index = result.Index;
Console.WriteLine("Index: " + index);
}
}
आउटपुट:
Index: 5
+ 1- मैंने इसे अपने उत्तर में ठीक उसी तरह किया। – RichardOD
क्या यह समाधान सभी ऑपरेशन के लिए SQL उत्पन्न करता है या यह IQueryable के सभी आइटम का चयन करता है और उसके बाद ही स्मृति में ऑपरेशन करता है? –
आप query.TakeWhile(x => !matchesCondition(x)).Count()
की तरह कुछ इस्तेमाल कर सकते हैं कि हालांकि पूर्ववर्ती मूल्यों, गणना के प्रभाव पड़ता है जो हो सकता है कि आप क्या चाहते हैं।
आपको उन पिछले मानों के माध्यम से गणना करना होगा, है ना? – treaschf
दिलचस्प समाधान। पिछले मानों को गिनना ठीक होगा यदि यह स्मृति वस्तु थी, लेकिन डीबी के लिए नहीं। ध्यान दें कि यदि तत्व सूची में नहीं है, तो यह फ़ंक्शन सूची की लंबाई देता है। आम तौर पर आप इस तरह के कार्यों को -1 या शायद शून्य वापस करने की उम्मीद करेंगे। –
@ मार्क बिअर्स: मैंने प्रश्न के वाक्यांश को पढ़ा है कि यह वांछित तत्व मौजूद था, और केवल स्थिति वांछित थी; और डीबी परिदृश्य वास्तव में गणना करने के बारे में मेरी चिंता थी। प्रैक्टिस में मुझे संदेह है कि IQueryable पर ऐसा करना मूर्खतापूर्ण है, लेकिन एक त्वरित हैक के रूप में यह दृष्टिकोण कम से कम संक्षेप में और समझ में आता है। –
आप "कहां" फ़ंक्शन के वर्जन का भी उपयोग कर सकते हैं जो संग्रह अनुक्रमणिका को पूर्व निर्धारित fu के पैरामीटर के रूप में शामिल करता है nction। अधिक जानकारी के लिए MSDN देखें।
var result = Enumerable.Range(0, 10).Where((x, i) => i == 6);
यदि 6 वें तत्व नहीं है तो संस्करण की एक खाली सूची हो सकती है। इसके परिणामस्वरूप जब तक आप परिणाम पर पुनरावृत्ति नहीं करते हैं तब तक यह खंड का मूल्यांकन नहीं करता है।
- 1. एक IQueryable संग्रह
- 2. IQueryable
- 3. IQueryable
- 4. IQueryable
- 5. IQueryable
- 6. LINQ: IQueryable
- 7. IQueryable C#
- 8. LINQ के साथ एक अलग IQueryable लौटने?
- 9. निष्पादित करने के लिए एक IQueryable बल?
- 10. कास्ट IQueryable <EntityObject> IQueryable <Specific>
- 11. LINQ और Enums IQueryable
- 12. IQueryable Lambda प्रोजेक्शन सिंटेक्स
- 13. IQueryable ओवर डब्ल्यूसीएफ सेवा
- 14. गैर-तुच्छ IQueryable
- 15. HashSet बनाम IQueryable
- 16. कैसे IQueryable कि IOrderedQueryable
- 17. IQueryable <T>
- 18. रिपोजिटरी पैटर्न - पीओसीओ या IQueryable?
- 19. रिटर्निंग खाली IQueryable <>
- 20. IQueryable IGrouping कैसे काम करें
- 21. LINQ: IQueryable <T>
- 22. अज्ञात प्रकारों के लिए IQueryable
- 23. IQueryable <T> आईडी की एक सूची द्वारा फ़िल्टरिंग
- 24. परिणाम IQueryable <T> एक साथ विलय कैसे करें?
- 25. यदि मैं एक IQueryable से चुनता हूं तो शामिल है
- 26. IQueryable OfType <T> जहां टी एक रनटाइम प्रकार
- 27. IQueryable (गैर सामान्य): गुम गणना और छोड़ें? यह IQueryable के साथ काम करता <T>
- 28. .NET इकाई फ्रेमवर्क - आईनेमेरेबल वीएस। IQueryable
- 29. कनवर्ट करें LINQ ObjectQuery IQueryable IENumerable
- 30. .NET कॉम्पैक्ट फ्रेमवर्क में IQueryable कहां है?
क्या 6 वां तत्व मिलान होने पर आप नंबर 5 प्राप्त नहीं करना चाहते हैं? आम तौर पर पहले तत्व में इंडेक्स 0 होता है, दूसरे में इंडेक्स 1 होता है, आदि –
हां जो मैं चाहता था और नीचे दिया गया जवाब ठीक काम करता है – San