Maison >développement back-end >C++ >Comment remplacer correctement Equals() et GetHashCode() pour la méthode Except() de LINQ ?

Comment remplacer correctement Equals() et GetHashCode() pour la méthode Except() de LINQ ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-05 06:32:40215parcourir

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

Implémentation des méthodes Equals() et GetHashCode() pour les classes personnalisées : un exemple pratique

Remplacer les méthodes Equals() et GetHashCode() dans les classes personnalisées est crucial pour garantir une comparaison et un hachage corrects des objets. Cet article montre la manière correcte d'implémenter ces méthodes pour votre classe RecommendationDTO afin de permettre son utilisation avec la méthode Except() de LINQ.

Implémentation d'Equals()

Pour remplacer Equals (), vous devez fournir une implémentation personnalisée qui compare les objets en fonction de leurs propriétés uniques. Dans votre cas, la propriété RecommendationId est un identifiant approprié. Voici l'implémentation corrigée :

public override bool Equals(object obj)
{
    var item = obj as RecommendationDTO;

    if (item == null)
    {
        return false;
    }

    return this.RecommendationId.Equals(item.RecommendationId);
}

Implémentation de GetHashCode()

La méthode GetHashCode() génère un code de hachage pour l'objet. Pour une comparaison cohérente, le code de hachage renvoyé doit être le même pour les objets ayant les mêmes propriétés d'identification. Dans votre cas, vous pouvez renvoyer le code de hachage de la propriété RecommendationId :

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}

Utilisation avec LINQ Except()

Avec ces méthodes remplacées en place, vous peut désormais utiliser la méthode LINQ Except() pour exclure les objets égaux les uns aux autres en fonction de leur propriété RecommendationId. Par exemple :

var list1 = new List<RecommendationDTO> { /* ... */ };
var list2 = new List<RecommendationDTO> { /* ... */ };

var result = list1.Except(list2);

Remarque : Assurez-vous de vérifier les valeurs nulles et d'utiliser la casse correcte pour les propriétés et les méthodes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn