2012-07-08 69 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一個新的列表以正確的方式。