我正在尝试使用LINQ
合并两个对象列表(车辆)时删除重复项:
var list = list1.Union(list2);
我有overridden the Equal
方法,代码甚至不介入其中。但是,此代码确实进入了覆盖:
Vehicle v1 = new Vehicle();
Vehicle v2 = new Vehicle();
if (v1.Equals(v2)).......
修改
车辆覆盖的签名位于:
我还实施了IEquatable<Vehicle>
public bool Equals(Vehicle other)
{
}
public override int GetHashCode()
{
}
我宁愿不将比较器传递给Union方法,因为我想要Vehicle类中的逻辑。
我在这里做错了什么?
答案 0 :(得分:6)
您与IEquatable<Vehicle>
无关,它只是一个选项,但不是必需的must-do
。我认为你没有正确覆盖你的Equals
,它应该是这样的:
public override bool Equals(object other) {
//your own code
}
public override int GetHashCode() {
//your own code
}
注意关键字覆盖,类型object
的参数与虚拟 Equals
基本方法相匹配对象