为自定义类实现 Equals() 和 GetHashCode() 方法:一个实际示例
重写 Equals() 和 GetHashCode() 方法在自定义类中对于确保正确的对象比较和散列至关重要。本文演示了为您的RecommendationDTO 类实现这些方法的正确方法,以使其能够与 LINQ 的 except() 方法一起使用。
实现 Equals()
重写 Equals (),您需要提供一个自定义实现,根据对象的独特属性来比较对象。在您的情况下,RecommendationId 属性是一个合适的标识符。下面是正确的实现:
public override bool Equals(object obj) { var item = obj as RecommendationDTO; if (item == null) { return false; } return this.RecommendationId.Equals(item.RecommendationId); }
实现 GetHashCode()
GetHashCode() 方法为对象生成哈希码。为了保持比较一致,对于具有相同标识属性的对象,返回的哈希码应该相同。在您的情况下,您可以返回RecommendationId属性的哈希代码:
public override int GetHashCode() { return this.RecommendationId.GetHashCode(); }
使用LINQ except()
使用这些重写的方法,您现在可以利用 LINQ except() 方法根据RecommendationId 属性排除彼此相等的对象。例如:
var list1 = new List<RecommendationDTO> { /* ... */ }; var list2 = new List<RecommendationDTO> { /* ... */ }; var result = list1.Except(list2);
注意: 确保检查空值并为属性和方法使用正确的大小写。
以上是如何正确重写 LINQ 的 except() 方法的 Equals() 和 GetHashCode()?的详细内容。更多信息请关注PHP中文网其他相关文章!