我正在尝试使用以下方法合并两个对象列表(车辆)时删除重复项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类中的逻辑.
我在这做错了什么?
你没有任何关系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方法匹配的类型参数.