Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 24681|Répondre: 1

[Source] C# Distinct déduplique conditionnellement les objets

[Copié le lien]
Publié sur 17/08/2018 10:56:00 | | | |
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.






Précédent:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Prochain:Plongée profonde en C# - Destructeurs
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com