के लिए मैं इस प्रकार एक पाश की है।Linq नेस्टेड लूप
मैं एक LINQ-statement की तलाश में हूं लेकिन मुझे इस पर अनिश्चितता है। मैं
result = myColl
.SelectMany(x => x.MyList)
.SelectMany(x => /* how to get the key of the outer loop here */ + x)
के लिए मैं इस प्रकार एक पाश की है।Linq नेस्टेड लूप
मैं एक LINQ-statement की तलाश में हूं लेकिन मुझे इस पर अनिश्चितता है। मैं
result = myColl
.SelectMany(x => x.MyList)
.SelectMany(x => /* how to get the key of the outer loop here */ + x)
इस क्वेरी भाव के साथ आसान है:
(from x in myColl
from y in x.MyList
select x.MyKey + y).ToList()
यह काम करता है क्योंकि यह करने के लिए अनुवाद:
myColl
.SelectMany(x => x.MyList.Select(item => new { List = x, Item = item }))
.Select(x => ...) //rest of the query, whatever you like
कुंजी है दोनों सूची के साथ ही सूची आइटम रखें। अज्ञात प्रकार (या किसी अन्य कंटेनर) का उपयोग कर क्वेरी के माध्यम से उन्हें चैनल करें।
आपको अज्ञात गुणों का नाम देने की आवश्यकता है। –
उन्हें अभिव्यक्ति से अपना डिफ़ॉल्ट नाम मिलता है। यह काम करता है। संपादन के लिए धन्यवाद। – usr
मुझे पूरा यकीन है कि दूसरा 'SelectMany' सिर्फ' चयन 'होना चाहिए, या यह टॉर्मोड के उत्तर में' SelectMany' अधिभार में अनुवाद करने की संभावना है। – juharr
का उपयोग करके इसे करने की कोशिश कर रहे एक overload of SelectMany जो "जनक" तत्व के लिए उपयोग की अनुमति देता है। ListOfList.SelectMany (सूची => list.InnerList, (lst, तत्व) => HandleInnerListAndElementFromIt (lst, तत्व))
result = myColl.SelectMany(x => x.MyList,(x1,x2)=>DoSomething(x1,x2));
संपादित जोड़ा गया:
अपने ठोस उदाहरण के लिए यह इस तरह दिखता है : SelectMany विधि कॉल करने के लिए दो लैम्ब्डा पैरामीटर देखते हैं
result = myColl.SelectMany(x=>x.MyList,(x,y)=>x.MyKey+y));
सूचना है कि।
पहला लैम्ब्डा "एक्स" लेगा और एक नया अंकुरित करेगा। x => x.MyList
दूसरा लैम्ब्डा "एक्स" और "वाई" लेता है और एक नया परिणाम उत्पन्न करता है। (एक्स, वाई) => x.MyKey + y
मुझे स्वीकार करना है, हालांकि यह अच्छा लग रहा है और जो मुझे चाहिए उसे पढ़ने के लिए काफी मुश्किल है। – HimBromBeere
मैं इसे देख सकता हूं। मैंने स्पष्टता के लिए संपादित किया। सौभाग्य। – Tormod
यह जब मैं व्यक्तिगत रूप से क्वेरी सिंटैक्स
var result = from x in myCol1
from y in x.MyList
select x.MyKey + y;
प्रत्येक के लिए
इतना आसान ... मुझे पता था कि यह काम करना चाहिए। धन्यवाद :) – HimBromBeere
नेस्टेड पढ़ने में आसान है, जहां एक LINQ क्वेरी अधिक अस्पष्ट हो सकता है पसंद करते हैं है। आपको लगता है कि आपको इस मामले में linq का उपयोग करने की आवश्यकता क्यों है? – Loofer