【问题标题】:LINQ checking for duplicate objects (excluding ID)LINQ 检查重复对象(不包括 ID)
【发布时间】:2010-07-22 11:29:13
【问题描述】:

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

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

每辆车都有许多字段,比如 CarID(primary key 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);

【问题讨论】:

    标签: linq-to-sql object duplicates equals


    【解决方案1】:

    您可以将 .Distinct 与 IEqualityComparer 一起使用

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

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

    如果您查看 ProductComparer 示例,您可能需要做的就是将“检查产品的属性是否相等”部分替换为您想要进行的检查,就差不多了。

    【讨论】:

    • 感谢弗兰克,它引导我朝着正确的方向前进并让它运转良好。我最终这样做了: bool DuplicateSearchesFound = ThisGuysSearchesList.Contains(NewSearch, new SearchComparer());
    猜你喜欢
    • 2016-04-01
    • 2013-05-28
    • 1970-01-01
    • 2013-09-06
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多