0

我有两个已合并的通用列表。说 listA 和 listB,两者都是 type List<SomeType>

listA.Union(listB);

联合集的类型System.Linq.Enumerable.UnionIterator<string>为 ,与 不同List<SomeType>

我试过铸造:

listA.Union(listB).ToList<SomeType>();

(List<SomeType>)listA.Union(listB);

两者都失败了。我试图访问 ForEach(),以为我可以将结果添加到新列表中。.Foreach() 不可用。

我可以使用传统的 foreach 并将每个项目添加到List<SomeType>变量中。但是,是否有一个 lambda 语句可以在一行中进行转换,分配给一个类型的变量List<SomeType>

4

2 回答 2

4

您不必在ToList方法中显式转换 List。如果两个列表都是相同类型的,你可以简单地ToList在最后得到一个相同类型的列表。

List<MyClass> listA = new List<MyClass>();
List<MyClass> listB = new List<MyClass>();
List<MyClass> temp = listA.Union(listB).ToList(); //Just do ToList at the end. 

在 ToList 方法中显式指定类型也应该有效。我不确定为什么它不起作用。

于 2012-10-02T04:26:54.897 回答
0

UnionIEnumerable<T>是interface 上的扩展方法,而不是 on List<T>,因此它不知道或不关心您正在尝试连接列表,因此除非您ToList明确调用,否则不会创建一个。

如果您想将一个列表“附加”到另一个列表,则可能需要使用AddRange方法。

于 2012-10-02T04:55:08.103 回答