LINQ

2011-08-25 12 views
6

के साथ विभिन्न प्रकार की दो सूचियों को जोड़ना क्या अलग-अलग प्रकार की दो सूची को सम्मिलित करना संभव है?LINQ

string[] left = { "A", "B", "C" }; 
int[] right = { 1, 2, 3 }; 
var result = left.Concat(right); 

ऊपर दिए गए कोड में एक प्रकार की त्रुटि है। यह काम करता है अगर प्रकार मिलान (उदाहरण के लिए दोनों ints या तार हैं)।

पोम

+0

मैं कल्पना करता हूं कि यह सामान्य रूप से संभव नहीं है लेकिन आपके उदाहरण की तरह परिदृश्य के लिए, आप आसानी से int सूची को स्ट्रिंग सूची में बदल सकते हैं और उन्हें जोड़ सकते हैं। – Icarus

+0

आपका अपेक्षित परिणाम क्या है (यानी 'परिणाम' किस प्रकार का है)? –

उत्तर

14

आप इसे बॉक्स कर सकते हैं।

var result = left.Cast<object>().Concat(right.Cast<object>()); 

resultIEnumerable<object> हो जाएगा।

फिर इसे अनबॉक्स करने के लिए, आप OfType<T>() का उपयोग कर सकते हैं।

var myStrings = result.OfType<string>(); 
var myInts = result.OfType<int>(); 
0

आप (इस मामले object में) एक आम आधार प्रकार के दोनों डाली सकता है, या तो आप उन्हें गठजोड़ कर सकते हैं आप सूचियों में से एक के प्रकार परिवर्तित कर सकते हैं, या तो:

right.Select(i = i.ToString()) 

या

left.Select(s => int.Parse(s)) // Careful of exceptions here! 
0

केवल जिस तरह से मैं बनाने के लिए जानते हैं कि यह काम होगा:

var result = left.Concat(right.Select(i = i.ToString())); 
संबंधित मुद्दे