C# LINQ Union未进入重写的Equals方法

C# LINQ Union未进入重写的Equals方法,c#,linq,C#,Linq,在使用LINQ合并两个对象(车辆)列表时,我尝试删除重复项,如: var list = list1.Union(list2); 我已经重写了Equals方法,代码甚至都不会进入它。但是,此代码会进入覆盖: Vehicle v1 = new Vehicle(); Vehicle v2 = new Vehicle(); if (v1.Equals(v2))....... 编辑 车辆覆盖的签名如下: 我还实现了IEquatable 我不希望将比较器传递给Union方法,因为我希望车辆类中有逻辑

在使用
LINQ
合并两个对象(车辆)列表时,我尝试删除重复项,如:

var list = list1.Union(list2);
我已经重写了Equals方法,代码甚至都不会进入它。但是,此代码会进入覆盖:

Vehicle v1 = new Vehicle();
Vehicle v2 = new Vehicle();

if (v1.Equals(v2)).......
编辑

车辆覆盖的签名如下:

我还实现了
IEquatable

我不希望将比较器传递给Union方法,因为我希望车辆类中有逻辑


我做错了什么?

您与
IEquatable
无关,它只是一个选项,但不是必需的
必须执行的
。我认为您没有正确覆盖您的
Equals
,它应该是这样的:

 public override bool Equals(object other) {                     
   //your own code
 }

 public override int GetHashCode() {            
   //your own code
 }

注意关键字override和类型
object
的参数匹配基本对象的虚拟
Equals
方法。

您需要实现
getHashCode
也可能重复我也做了这件事-我会更新以防出错
 public override bool Equals(object other) {                     
   //your own code
 }

 public override int GetHashCode() {            
   //your own code
 }