我有一个合并两个列表的方法。这两个合并的列表是返回列表的子类型对象的列表。 “合并”是指“允许重复”。

因此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不正确使用,因为它将确保“相等”的对象只会出现一次。

10-07 23:10
查看更多