Habituellement, nous utilisons Distinct en C# pour la déduplication de tableaux, des types de données généraux basés sur tableaux, tels que int, chaîne. peuvent aussi être utilisés pour la déduplication d’objets, regardons la définition de la méthode Distinct dans C# :
Il y a une charge lourde, le premier paramètre est ajouté, c’est-à-dire la méthode d’expansion, à propos de la méthode d’expansion, merci de comprendre Baidu. Étudions la déduplication d’objets dans Distinct, disons que nous avons maintenant une classe People :
Nous déclarons une collection d’objets ListPeole :
Utilisons la méthode Distinct sur ListPeople sans aucun paramètre, et le résultat est le suivant :
On peut voir que si la méthode Distinct n’a pas de paramètres, elle dédupliquera p, p1, p2 dans l’ensemble d’objets, et il n’y a pas de déduplication pour différents objets ayant la même valeur de membre que l’objet. Nous avons maintenant une exigence : pour les personnes ayant le même ID, nous comptons comme la même personne, de produire les personnes non dupliquées dans l’ensemble (en sortant simplement une pour le même ID), à ce stade, nous utilisons la seconde méthode Distinct, qui exige que les paramètres passés soient de type IEqualityComparer, héritant d’une interface générique, nous ajoutons le code suivant :
En héritant de l’interface IEqualityComparer, vous devez implémenter les méthodes Equals et GetHashCode. Lorsque nous comparons, nous pouvons faire passer une entité avec un PeopleCompareByID :
Les résultats de la course sont les suivants :
Nous avons atteint l’effet de déduplication par ID. Maintenant, les exigences ont encore changé, l’ID et la province sont la même personne, pour produire les informations de la personne (la même peut en produire une à volonté), à ce stade, on voit qu’ID=0 et Province="Hubei » sont dupliqués, pour les dédupliquer, nous avons une autre classe, ou hériter d’IEqualityComparer :
De même, lors de l’utilisation de la méthode Distinct, une instance de PeopleCompareByIDAndProvince est passée :
Les résultats après la course sont les suivants :
On a obtenu l’effet que nous voulions. Cette méthode peut être utilisée lorsqu’il est confronté au problème de déduplication avec trois éléments d’objet ou plus pour déterminer si l’objet est dupliqué. Ce qui précède est mon humble avis.
|