使用自定义比较器的相交列表返回空集

时间:2012-11-12 11:44:11

标签: c# linq collections

我使用intersect比较list,如下所示: (以POCO Car为例)

IEnumerable<Car> updatedCars = CarsList.Intersect(dbCarsList, carsComperator);

我将carsComperator定义如下

public bool Equals(Car x, Car y)
{
    if (object.ReferenceEquals(x, y)) return true;
    if (x == null || y == null) return false;
    return (x.Id == y.Id);
}

public int GetHashCode(Car car)
{
    return car.Id.GetHashCode();  // Id is Guid
}

但是当Intersect命令运行时,它什么也没带来 我假设程序没有通过我的比较器,因为那里的断点没有停止。

知道我做错了什么?

1 个答案:

答案 0 :(得分:3)

尝试遍历结果列表。如果Intersect使用yield return机制,它将仅在迭代生成IEnumerable时启动比较。