Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索“;相同的;数据库中的复杂对象_C#_Linq To Sql_Iequalitycomparer - Fatal编程技术网

C# 检索“;相同的;数据库中的复杂对象

C# 检索“;相同的;数据库中的复杂对象,c#,linq-to-sql,iequalitycomparer,C#,Linq To Sql,Iequalitycomparer,我在LINQtoSQL中有一个名为“Cars”的表,其中包含“Car”对象 每辆车都有一个引擎ID和一个彩色ID 我已经在内存中创建了一个新的本地Car对象(尚未提交到数据库) 我已经编写了一个IEqualityComparer,它与.Contains配合使用效果很好,可以告诉我是否存在与我创建的车“相同”的车 但它会返回一个布尔 我怎样才能真正得到哪些车是相同的 我想要……之类的东西 IQueryable<Car> IdenticalCar = db.Cars.Equals(MyC

我在LINQtoSQL中有一个名为“Cars”的表,其中包含“Car”对象

每辆车都有一个引擎ID和一个彩色ID

我已经在内存中创建了一个新的本地Car对象(尚未提交到数据库)

我已经编写了一个IEqualityComparer,它与.Contains配合使用效果很好,可以告诉我是否存在与我创建的车“相同”的车

但它会返回一个布尔

我怎样才能真正得到哪些车是相同的

我想要……之类的东西

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

Thx xandy。但是当我尝试这段代码时,当我的existing.Contains方法返回TRUE(存在相同的对象)时,.Equals然后返回null,并且找不到任何值。.Equals是否确实使用IEqualityComparer??这似乎对我不起作用。。Cheerresalso:当我调试上述代码时,它从未进入我的Equals例程。。那么,当我使用您的代码时,为什么没有使用我自己的Equals实现呢?干杯……好的,我已经解决了。我需要从IEquatable接口实现,并实现我自己的Equals(Car)方法、Equals(obj)方法以及GetHashCode方法。干杯
db.Cars.Where(c=>c.Equals(MyCar)).FirstOrDefault();