是否可以连接两个不同类型的列表?用LINQ连接两个不同类型的列表
string[] left = { "A", "B", "C" };
int[] right = { 1, 2, 3 };
var result = left.Concat(right);
上面的代码有意识地有一个类型错误。它适用于类型匹配(例如,两者都是整数或字符串)。
pom
是否可以连接两个不同类型的列表?用LINQ连接两个不同类型的列表
string[] left = { "A", "B", "C" };
int[] right = { 1, 2, 3 };
var result = left.Concat(right);
上面的代码有意识地有一个类型错误。它适用于类型匹配(例如,两者都是整数或字符串)。
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
),或者你可以转换类型列表中的一个,所以你可以将它们组合起来,或者:
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
您的预期结果是什么(即“结果”是什么类型)? –