2008-11-26 6 views
45

में संग्रहों का संग्रह कैसे विलय करें I IEnumerable<T> में संलयन करने में सक्षम होना चाहते हैं (यानी सभी व्यक्तिगत संग्रह एक में विलय करें)। Union ऑपरेटर केवल दो संग्रहों पर लागू होते हैं। कोई उपाय?लिंक

उत्तर

82

प्रयास करें

var it = GetTheNestedCase(); 
return it.SelectMany(x => x); 

SelectMany एक LINQ परिवर्तन जो अनिवार्य रूप से कहते हैं, "के लिए एक संग्रह में प्रत्येक आइटम एक संग्रह के तत्वों लौटने" है। यह एक तत्व को कई में बदल देगा (इसलिए SelectMany)। एक फ्लैट सूची में संग्रह के संग्रह को तोड़ने के लिए यह बहुत अच्छा है।

+1

LINQ कभी भी मुझे आश्चर्यचकित करने में विफल रहता है कि यह बॉक्स से क्या कर सकता है। :) – neminem

13
var lists = GetTheNestedCase(); 
return 
    from list in lists 
    from element in list 
    select element; 

सी # 3.0 क्वेरी अभिव्यक्ति वाक्यविन्यास का उपयोग करके ऐसा करने का एक और तरीका है।