【发布时间】:2012-11-12 11:44:10
【问题描述】:
我正在使用 intersect 与列表进行比较,如下所示: (以 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 命令运行时,它什么也没带来。
我假设程序没有通过我的比较器,因为我的断点处没有停止。
知道我做错了什么吗?
【问题讨论】:
-
您显示的代码乍一看还不错,所以问题肯定出在其他地方。您能否添加一个简短但完整的程序来演示该问题?
-
您的
GetHashCode中有错字吗?应该是car.Id.GetHashCode()吗? -
我已将其充实为一个可运行的示例,并且运行良好。也许展示你正在做的与此不同的事情? pastie.org/5365261
-
你确定你的两个输入中都有汽车吗?
-
您是否尝试过实现您的查询
var updatedCars = CarsList.Intersect(dbCarsList, carsComperator).ToList()?
标签: c# linq collections