LINQ检查重复对象(不包括ID)

时间:2010-07-22 11:29:13

标签: linq-to-sql object duplicates equals

我正在使用带有C#的LINQ to SQL(SQL Server)。

我有一个名为“Cars”的表,它自动成为名为“Car”的LINQ类/对象。 一切都很好。

每辆车都有许多字段,比如CarID(主键int),EngineID,ColourID。

我在Cars表中有10个现有行。

使用所有很酷的LINQ东西,我在C#中使用我在“Car”分部类中创建的重载构造函数创建了一个新的“Car”对象。例如:

Car MyCar = new Car(17, 5);

现在这很好地给了我一个新的Car对象的引用,我当然还没有提交到数据库。

运行快速检查以确保没有其他具有相同EngineID和ColourID值的汽车的LINQ最精明/最新方式是什么(我不在乎他们是否有不同的CarID - 我只想比较其他值列并确保我不再创建和插入具有相同引擎/颜色组合的汽车。

有一种很酷的方法可以通过以下方式快速实现这一目标:

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

1 个答案:

答案 0 :(得分:2)

您可以将.Distinct与IEqualityComparer

一起使用
var distinctcars = from Repo.cars.Distinct(new MyComparer());

IEqualityComparer的一个很好的例子就在这里 - http://msdn.microsoft.com/en-us/library/bb338049.aspx

如果您查看了ProductComparer示例,那么您可能需要做的就是将“检查产品的属性是否相同”替换为您要制作的支票,这就是它。