2010-11-09 77 views
0

我在LINQ to SQL中有一個名爲「Cars」的表格,其中包含「Car」對象。從數據庫中檢索「相同」的複雜對象

每輛車都有一個EngineID和一個ColourID。

我在內存中創建了一個新的本地Car對象(尚未提交到數據庫)。

我已經有一個IEqualityComparer寫入,與.Contains一起使用可以很好地告訴我TRUE/FALSE是否有與我創建的汽車「相同」的汽車已經存在。

但它返回一個布爾值..

我怎樣才能真正得到哪些車型是相同的..?

E.g.我想喜歡的東西一樣..

IQueryable<Car> IdenticalCar = db.Cars.Equals(MyCar).FirstOrDefault(); 

回答

1
db.Cars.Where(c=>c.Equals(MyCar)).FirstOrDefault(); 
+0

THX xandy。但是當我嘗試這段代碼時,雖然我現有的.Contains方法返回TRUE(存在相同的對象),但.Equals返回null並且沒有找到任何。 .Equals是否肯定使用IEqualityComparer?這似乎並沒有爲我工作..乾杯 – Aaron 2010-11-09 04:15:30

+0

另外:當我調試上述代碼,它從來沒有進入我的Equals例程。那麼爲什麼我自己的Equals實現在我使用你的代碼時被利用?乾杯.. – Aaron 2010-11-09 04:20:30

+0

好吧,我整理出來。我需要從IEquatable接口實現並實現我自己的Equals(Car)方法以及Equals(obj)方法和GetHashCode方法。乾杯 – Aaron 2010-11-09 04:42:03