2011-08-25 65 views
6

是否可以连接两个不同类型的列表?用LINQ连接两个不同类型的列表

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

上面的代码有意识地有一个类型错误。它适用于类型匹配(例如,两者都是整数或字符串)。

pom

+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())); 
相关问题