異なるタイプの2つのリストを連結することは可能ですか?LINQで異なるタイプの2つのリストを連結する
string[] left = { "A", "B", "C" };
int[] right = { 1, 2, 3 };
var result = left.Concat(right);
上記のコードには、誤ってタイプエラーがあります。型が一致する場合(例えば、両方がintまたは文字列の場合)に機能します。
pom
異なるタイプの2つのリストを連結することは可能ですか?LINQで異なるタイプの2つのリストを連結する
string[] left = { "A", "B", "C" };
int[] right = { 1, 2, 3 };
var result = left.Concat(right);
上記のコードには、誤ってタイプエラーがあります。型が一致する場合(例えば、両方がintまたは文字列の場合)に機能します。
pom
あなたはそれをボックスすることができます。
var result = left.Cast<object>().Concat(right.Cast<object>());
result
IEnumerable<object>
になります。
次に、ボックスをアンボックスにするには、OfType<T>()
を使用できます。
var myStrings = result.OfType<string>();
var myInts = result.OfType<int>();
、あなたが(この場合はobject
に)共通の基本型の両方にキャストすることができ、またはあなたがそれらを組み合わせることができますので、あなたがリストの1の種類を変換することができ、次のいずれか
right.Select(i = i.ToString())
か私が作ることを知っている
left.Select(s => int.Parse(s)) // Careful of exceptions here!
唯一の方法は、この作品は次のようになります。
var result = left.Concat(right.Select(i = i.ToString()));
これは一般的ではありませんが、あなたの例のようなシナリオでは、intリストを文字列リストに簡単に変換して連結することができます。 – Icarus
期待される結果は何ですか(つまり、どのようなタイプが 'result'ですか)? –