2011-08-25 12 views
6

異なるタイプの2つのリストを連結することは可能ですか?LINQで異なるタイプの2つのリストを連結する

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

上記のコードには、誤ってタイプエラーがあります。型が一致する場合(例えば、両方がintまたは文字列の場合)に機能します。

pom

+0

これは一般的ではありませんが、あなたの例のようなシナリオでは、intリストを文字列リストに簡単に変換して連結することができます。 – Icarus

+0

期待される結果は何ですか(つまり、どのようなタイプが 'result'ですか)? –

答えて

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に)共通の基本型の両方にキャストすることができ、またはあなたがそれらを組み合わせることができますので、あなたがリストの1の種類を変換することができ、次のいずれか

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())); 
関連する問題