我有一个合并两个列表的方法。这两个合并的列表是返回列表的子类型对象的列表。 “合并”是指“允许重复”。
因此Sub1和Sub2类型是Sup1类型的子类型。
这是我的代码
var listSub1 = new List<Sub1>(); //With some content added..
var listSub2 = new List<Sub2>(); //With content too..
var listToReturn = new List<Sup1>();
listToReturn.AddRange(listSub1.Select(item => item as Sup1).ToList());
listToReturn.AddRange(listSub2.Select(item => item as Sup1).ToList());
return listeToReturn;
它工作正常,但我想知道这是否是合并和转换列表的最佳方法。
最佳答案
你可以写
var newList =
listSub1.Cast<Sup1>()
.Concat(listSub2.Cast<Sup1>()).ToList();
请注意,
Union
不正确使用,因为它将确保“相等”的对象只会出现一次。