2012-07-08 68 views
0

我有两个List<T>对象,我想交叉,但是尝试时出现错误。在C#中交集两个List <>#

// 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); 

回答

3

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

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

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

请注意,您可以在调用Intersect<T>时忽略类型参数,编译器足够聪明以推断它。

2

你可以这样来做:

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

这是因为相交会返回一个IEnumerable,这是创建一个IEnumerable一个新的列表以正确的方式。