我想要交叉两个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);
答案 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创建新列表的正确方法。