Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 24681|Răspunde: 1

[Sursă] C# Distinct deduplicează condiționat obiectele

[Copiază linkul]
Postat pe 17.08.2018 10:56:00 | | | |
De obicei, folosim Distinct în C# pentru deduplicarea array-urilor, tipuri generale de date bazate pe tablou-uri, cum ar fi int, string. pot fi folosite și pentru deduplicarea obiectelor, să aruncăm o privire asupra definiției metodei Distinct din C#:



Există o sarcină mare, primul parametru este adăugat, adică metoda de expansiune, despre metoda de expansiune, vă rog să înțelegeți Baidu.
Să studiem deduplicarea obiectelor din Distinct, să presupunem că avem acum o clasă Oameni:




Declarăm o colecție de obiecte ListPeole:

Să folosim metoda Distinct pe ListPeople fără niciun parametru, iar rezultatul este următorul:



Se poate observa că dacă metoda Distinct nu are parametri, va deduplica p, p1, p2 în setul de obiecte și nu există deduplicare pentru obiecte diferite cu aceeași valoare de membru a obiectului.
Acum avem o cerință: pentru Persoanele cu același ID, să considerăm aceeași persoană, să producem persoanele neduplicate din set (doar una pentru același ID), în acest moment folosim a doua metodă Distinct, metoda care cere ca parametrii transmisi să fie de tip IEqualityComparer, moștenind o interfață generică, adăugăm următorul cod:


Moștenind interfața IEqualityComparer, trebuie să implementezi metodele Equals și GetHashCode.
Când comparăm, putem introduce o entitate cu un PeopleCompareByID:


Rezultatele alergării sunt următoarele:



Am obținut efectul de deduplicare prin ID.
Acum cerințele s-au schimbat din nou, ID-ul și provincia sunt aceeași persoană, pentru a genera informațiile persoanei (aceeași poate genera una după bunul plac), în acest moment vedem că ID=0 și Province="Hubei" sunt duplicate, pentru a le deduplica avem o altă clasă, sau moștenim de la IEqualityComparer:


În mod similar, când se folosește metoda Distinct, se trece o instanță a PeopleCompareByIDAndProvince:

Rezultatele după alergare sunt următoarele:



Am obținut efectul dorit.
Această metodă poate fi folosită atunci când se întâlnește problema deduplicării cu trei sau mai mulți membri ai obiectului pentru a determina dacă obiectul este duplicat.
Cele de mai sus sunt doar părerea mea.






Precedent:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Următor:C# Deep Dive - Destructori
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com