我正在尝试使用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类中的逻辑。
我在这里做错了什么?
最佳答案
您与IEquatable<Vehicle>
无关,这只是一个选择,但不是必需的must-do
。我认为您没有正确覆盖Equals
,它应如下所示:
public override bool Equals(object other) {
//your own code
}
public override int GetHashCode() {
//your own code
}
注意关键字会覆盖和
object
类型的参数,该参数与基础对象的虚拟Equals
方法匹配。关于c# - LINQ联合不进入重写的Equals方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19157347/