我有两个已经联合的通用列表。说listA和listB,都是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>
类型的变量?
答案 0 :(得分: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方法中明确指定类型也应该有效。我不确定为什么它不起作用。
答案 1 :(得分:0)
Union
是IEnumerable<T>
接口上的扩展方法,而不是List<T>
上的扩展方法,因此它不知道或不关心您是否尝试连接列表,因此不会创建一个结果,除非您明确地致电ToList
。
如果您想将一个列表“附加”到另一个列表,则可能需要使用AddRange
方法。