2010-07-22 60 views
1

我使用LINQ to SQL(SQL Server)與C#。LINQ檢查重複對象(不包括ID)

我有一張名爲「Cars」的表格,它自動變成名爲「Car」的LINQ類/對象。 一切都很好。

每輛車都有多個字段,例如CarID(主鍵int),EngineID,ColourID。

我在Cars表中有10行存在。

使用所有酷的LINQ的東西,我在C#中創建一個新的「汽車」對象與重載的構造函數,我在我的「汽車」部分類創建。例如:

Car MyCar = new Car(17, 5); 

現在,這很好地給了我一個新Car對象的引用,我當然還沒有提交到數據庫。

運行快速檢查以確保沒有其他具有相同EngineID和ColourID值的汽車存在(我不在乎他們是否有不同的CarID - 我只是想要比較其他值列,並確保我不創建和插入具有相同引擎/顏色組合的更多汽車)。

有一個很酷的方式與像真的很快實現這一目標:

return db.Cars.Equals(x => MyCar); 

回答

2

可以使用.Distinct用的IEqualityComparer的IEqualityComparer

var distinctcars = from Repo.cars.Distinct(new MyComparer()); 

一個很好的例子是在這裏 - http://msdn.microsoft.com/en-us/library/bb338049.aspx

如果您查看ProductComparer示例,您可能需要做的只是替換「檢查產品ts'屬性是平等的「部分與你想要做的檢查,這就是它。

+0

謝謝弗蘭克,這讓我朝着正確的方向前進,並且很好地工作。我結束了這樣做: bool DuplicateSearchesFound = ThisGuysSearchesList.Contains(NewSearch,new SearchComparer()); – Aaron 2010-07-26 07:15:26

+0

沒有probs,很高興它幫助:) – 2010-07-29 01:13:19