Heim >Backend-Entwicklung >C++ >Wie kann ich Equals() und GetHashCode() für die Except()-Methode von LINQ ordnungsgemäß überschreiben?
Implementieren der Methoden Equals() und GetHashCode() für benutzerdefinierte Klassen: Ein praktisches Beispiel
Überschreiben der Methoden Equals() und GetHashCode() in benutzerdefinierten Klassen ist entscheidend, um einen ordnungsgemäßen Objektvergleich und Hashing sicherzustellen. Dieser Artikel zeigt, wie Sie diese Methoden für Ihre RecommendationDTO-Klasse richtig implementieren, um deren Verwendung mit der Except()-Methode von LINQ zu ermöglichen.
Implementieren von Equals()
Um Equals zu überschreiben () müssen Sie eine benutzerdefinierte Implementierung bereitstellen, die die Objekte anhand ihrer eindeutigen Eigenschaften vergleicht. In Ihrem Fall ist die RecommendationId-Eigenschaft ein geeigneter Bezeichner. Hier ist die korrigierte Implementierung:
public override bool Equals(object obj) { var item = obj as RecommendationDTO; if (item == null) { return false; } return this.RecommendationId.Equals(item.RecommendationId); }
Implementierung von GetHashCode()
Die GetHashCode()-Methode generiert einen Hash-Code für das Objekt. Für einen konsistenten Vergleich sollte der zurückgegebene Hash-Code für Objekte mit denselben identifizierenden Eigenschaften derselbe sein. In Ihrem Fall können Sie den Hash-Code der RecommendationId-Eigenschaft zurückgeben:
public override int GetHashCode() { return this.RecommendationId.GetHashCode(); }
Verwendung mit LINQ Except()
Mit diesen überschriebenen Methoden können Sie kann jetzt die LINQ-Except()-Methode verwenden, um Objekte auszuschließen, die einander gleich sind, basierend auf ihrer RecommendationId-Eigenschaft. Zum Beispiel:
var list1 = new List<RecommendationDTO> { /* ... */ }; var list2 = new List<RecommendationDTO> { /* ... */ }; var result = list1.Except(list2);
Hinweis: Achten Sie darauf, auf Nullwerte zu prüfen und die richtige Schreibweise für Eigenschaften und Methoden zu verwenden.
Das obige ist der detaillierte Inhalt vonWie kann ich Equals() und GetHashCode() für die Except()-Methode von LINQ ordnungsgemäß überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!