2012-11-12 44 views
-1

我比較列出使用交叉如下: (使用POCO車爲例)與自定義比較收益相交名單空集

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

您所看到的代碼乍一看看起來不錯,所以問題必須在其他地方。你能添加一個簡短但完整的程序來證明問題嗎? – dtb

+0

你的'GetHashCode'中有錯字嗎?應該是'car.Id.GetHashCode()'? –

+0

你有沒有試過在你的'IEqualityComparer'中設置一個斷點? –

回答

3

嘗試遍歷結果列表。如果Intersect使用收益返回機制,則只有在生成IEnumerable迭代時纔會啓動比較。

+0

這個。 非常感謝。 – Jeb