2

我有两个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);
4

2 回答 2

5

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

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

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

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

于 2012-07-08T12:59:33.057 回答
2

你可以这样做:

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

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

于 2012-07-08T13:16:55.653 回答