相交两个列表<>在C#中

时间:2012-07-08 12:57:04

标签: c# c#-4.0

我想要交叉两个List<T>个对象,但尝试时会出错。

// Make the Keys in the Dictionary<Load, double> _loads to form a List<Load>
List<Load> l1 = _loads.Keys.ToList();

// Get a list from my element.
List<Load> l2 = element.ListLoads;

// Intersect
List<Load> loads = (List<Load>)l1.Intersect<Load>(l2);

2 个答案:

答案 0 :(得分:4)

Intersect<T>会返回IEnumerable<T>,所以正确的方法是:

var loads = l1.Intersect(l2).ToList();

ToList<T>List<T>创建IEnumerable<T>

请注意,在调用Intersect<T>时可以省略type参数,编译器足够智能推断它。

答案 1 :(得分:2)

你可以这样做:

List<Load> loads=new List<Load>(l1.Intersect(l2));

这是因为Intersect将返回IEnumerable,这是从IEnumerable创建新列表的正确方法。