代码之家  ›  专栏  ›  技术社区  ›  Aaron

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

  •  1
  • Aaron  · 技术社区  · 14 年前

    我正在使用linqtosql(sqlserver)和C#。

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

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

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

    Car MyCar = new Car(17, 5);
    

    运行快速检查以确保不存在具有相同EngineID和ColourID值的其他汽车的最新方法是什么(我不关心它们是否具有不同的CarID-我只想比较其他值列,并确保不创建和插入具有相同引擎/颜色组合的任何其他汽车)。

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

    return db.Cars.Equals(x => MyCar);
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Frank Tzanabetis    14 年前

    IEqualityComparer

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

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

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