為自訂類別實作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中文網其他相關文章!