LINQ Union没有进入重写的Equals方法

dav*_*avy 9 c# linq

我正在尝试使用以下方法合并两个对象列表(车辆)时删除重复项LINQ:

var list = list1.Union(list2);
Run Code Online (Sandbox Code Playgroud)

我有overridden the Equal方法,代码甚至不会进入它.但是,此代码确实进入了覆盖:

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

if (v1.Equals(v2)).......
Run Code Online (Sandbox Code Playgroud)

编辑

车辆覆盖的签名如下:

我也实施了 IEquatable<Vehicle>

 public bool Equals(Vehicle other)
 {                     
 }

 public override int GetHashCode()
 {            
 }
Run Code Online (Sandbox Code Playgroud)

我宁愿不将比较器传递给Union方法,因为我想要Vehicle类中的逻辑.

我在这做错了什么?

Kin*_*ing 6

你没有任何关系IEquatable<Vehicle>,它只是一个选项,但不是必需的must-do.我认为你没有Equals正确覆盖你,它应该是这样的:

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

 public override int GetHashCode() {            
   //your own code
 }
Run Code Online (Sandbox Code Playgroud)

注意关键字覆盖object与基础对象的 Equals方法匹配的类型参数.