使用LINQ连接两个不同类型的列表

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

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

上面的代码有点错误。 如果类型匹配(例如,两者都是整数或字符串),它就有效。

POM

你可以把它装箱。

 var result = left.Cast().Concat(right.Cast()); 

result将是IEnumerable

然后要取消它,你可以使用OfType OfType()

 var myStrings = result.OfType(); var myInts = result.OfType(); 

您可以将两者都转换为公共基类型(在本例中为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()));