2011-09-20 31 views
7

मेरी कक्षा A की एक सूची है, कक्षा A कक्षा B की एक सूची है। मैं के सभी उदाहरणों के भीतर B के सभी उदाहरणों पर काम करना चाहता हूं।लिंक - सूचियों की सूचियों पर ऑपरेटिंग

var myListOfA = new List<A>(); 

class A 
{ 
    public List<B> ListOfB; 
} 

मैं कैसे अधिक पुनरावृति कर सकते हैं सभी B अर्थात foreach(var b in myListOfA.ListOfB){}?

उत्तर

9

आप SelectMany उपयोग कर सकते हैं:

foreach(var b in myListOfA.SelectMany(a => a.ListofB)) 

ideone.com पर कार्य करते हुए देखें।

+1

आह, मैंने 'चयन' की कोशिश की थी जो काम नहीं कर रहा था (अब स्पष्ट प्रतीत होता है), स्पॉट ऑन। धन्यवाद। – Chris

2

एक और तरीका है कि मैं कैसे नेस्टेड वस्तुओं के बारे में सोच के लिए अच्छी तरह से काम करता है:

(from A objA in myListOfA 
    from B objB in objA.ListOfB 
     select objB); 

इस "प्रशंसक बाहर" होगा सब एक मुख्य सूची में के भीतर ख की सूची।

+0

ध्यान दें कि यह 'SelectMany' के लिए वाक्य रचनात्मक चीनी है, लेकिन मैं सहमत हूं, कभी-कभी इसे और अधिक पठनीय। – Jens

+0

हाँ यह निश्चित रूप से selectmany का उपयोग करने का एक और तरीका है, बस इसे संदर्भ उद्देश्यों के लिए यहां चाहता था –

संबंधित मुद्दे