是否可以连接两个不同类型的列表?
string[] left = { "A", "B", "C" };
int[] right = { 1, 2, 3 };
var result = left.Concat(right);
上面的代码显然有一个类型错误。如果类型匹配(例如,两者都是整数或字符串),它就有效。
POM
答案 0 :(得分:16)
你可以装箱。
var result = left.Cast<object>().Concat(right.Cast<object>());
result
将为IEnumerable<object>
。
然后要将其取消包装,您可以使用OfType<T>()
。
var myStrings = result.OfType<string>();
var myInts = result.OfType<int>();
答案 1 :(得分:0)
您可以将两者都转换为公共基类型(在本例中为object
),或者您可以转换其中一个列表的类型,以便将它们组合起来:
right.Select(i = i.ToString())
或
left.Select(s => int.Parse(s)) // Careful of exceptions here!
答案 2 :(得分:0)
我所知道的唯一方法就是:
var result = left.Concat(right.Select(i = i.ToString()));