LINQ 联合不会进入重写的等于方法
本文关键字:于方法 方法 重写 LINQ | 更新日期: 2023-09-27 18:33:48
我试图在合并两个对象(车辆)列表时删除重复项,使用如下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()
{
}
我宁愿不传递联盟方法的比较器,因为我希望在车辆类中传递逻辑。
我在这里做错了什么?
你与IEquatable<Vehicle>
无关,它只是一个选项,但不是必需的must-do
。我认为您没有正确覆盖Equals
,它应该看起来像这样:
public override bool Equals(object other) {
//your own code
}
public override int GetHashCode() {
//your own code
}
请注意关键字 override 和类型为 object
的参数,它与基对象的虚拟Equals
方法匹配。