Heim > Backend-Entwicklung > C++ > Wie kann ich Equals() und GetHashCode() für die Except()-Methode von LINQ ordnungsgemäß überschreiben?

Wie kann ich Equals() und GetHashCode() für die Except()-Methode von LINQ ordnungsgemäß überschreiben?

Susan Sarandon
Freigeben: 2025-01-05 06:32:40
Original
261 Leute haben es durchsucht

How to Properly Override Equals() and GetHashCode() for LINQ's Except() Method?

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);
}
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage