2013-01-04 10 views
114

मैं IEnumerable<T> के दो उदाहरणों (समान T साथ) है। मुझे IEnumerable<T> का एक नया उदाहरण चाहिए जो दोनों का सहभागिता है।कैसे एक नया IEnumerable <T> में दो IEnumerable <T> श्रेणीबद्ध करने के लिए?

वहाँ नेट में एक निर्माण में विधि है कि ऐसा करने के लिए है या मैं इसे अपने आप को लिखने के लिए है?

+9

आप बुकमार्क http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b कर सकते हैं। –

+0

संबंधित, यदि यह मदद करता है: [तत्वों के एकाधिक संग्रह को गठबंधन करने के लिए सुरुचिपूर्ण तरीका?] (Http://stackoverflow.com/questions/4493858/elegant-way-to-combine-multiple-collections-of-elements) – nawfal

उत्तर

189

हाँ, वस्तुओं के लिए LINQ Enumerable.Concat के साथ इस का समर्थन करता है:

var together = first.Concat(second); 
+0

मैं हमेशा विस्तार विधियों, टीएक्स को देखना भूल जाओ। –

+9

@ सैमुएलरोस्सेल यह भी न भूलें कि आप जिन कार्यों को करना चाहते हैं, उनके नाम शायद बंद हैं यदि आप ठीक कह रहे हैं कि आप क्या कर रहे हैं। हमेशा IntelliSense ब्राउज़ करें, आप बहुत कुछ सीखते हैं। –

+2

क्या यह दूसरा = पहला करना है। कॉनकैट (दूसरा)? क्या हमारे पास कोई सहमति होगी? – user2934433

4

आप अपने समाधान के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं: -

public void Linq94() 
{ 
    int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; 
    int[] numbersB = { 1, 3, 5, 7, 8 }; 

    var allNumbers = numbersA.Concat(numbersB); 

    Console.WriteLine("All numbers from both arrays:"); 
    foreach (var n in allNumbers) 
    { 
     Console.WriteLine(n); 
    } 
} 
2
//The answare i was looking for when searching 
public void Answer() 
{ 
    IEnumerable<YourClass> first = this.GetFirstIEnumerableList(); 
    //Assign to empty list so we can use later 
    IEnumerable<YourClass> second = new List<YourClass>(); 

    if (IwantToUseSecondList) 
    { 
     second = this.GetSecondIEnumerableList(); 
    } 
    IEnumerable<SchemapassgruppData> concatedList = first.Concat(second); 
} 
12

Concat विधि एक वस्तु जो औजार वापस आ जाएगी IEnumerable<T> किसी ऑब्जेक्ट को लौटकर (इसे बिल्ली पर कॉल करें) जिसका गणक अनुक्रम में दो पास-इन समेकित आइटम (उन्हें ए और बी) कॉल करने का प्रयास करेगा। यदि पास किए गए अंकुक्रम अनुक्रमों का प्रतिनिधित्व करते हैं जो बिल्ली के जीवनकाल के दौरान नहीं बदले जाएंगे, और बिना दुष्प्रभावों से पढ़ा जा सकता है, तो बिल्ली का सीधे उपयोग किया जा सकता है। अन्यथा, यह एक अच्छा विचार Cat पर ToList() फोन और उपयोग करने के लिए हो सकता है, जिसके परिणामस्वरूप List<T> (जो ए और बी की सामग्री का एक स्नैपशॉट का प्रतिनिधित्व करेंगे)।

कुछ enumerables जब गणन शुरू होता है एक स्नैपशॉट ले, और अगर संग्रह गणन के दौरान संशोधित किया गया है कि स्नैपशॉट के डाटा वापस आ जाएगी। यदि बी इतनी गिनती है, तो बी के सामने होने वाली बी में कोई भी परिवर्तन ए के अंत तक पहुंच गया है, बिल्ली की गणना में दिखाई देगा, लेकिन इसके बाद होने वाले परिवर्तन नहीं होंगे। इस तरह के अर्थशास्त्र शायद भ्रमित हो सकता है; बिल्ली के स्नैपशॉट लेने से ऐसे मुद्दों से बच सकते हैं।

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