Maison >développement back-end >C++ >Comment remplacer correctement Equals() et GetHashCode() pour la méthode Except() de LINQ ?
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!