Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 24681|Antwoord: 1

[Bron] C# Distinct conditioneel dedupliceert objecten

[Link kopiëren]
Geplaatst op 17-08-2018 10:56:00 | | | |
Meestal gebruiken we Distinct in C# voor arraydeduplicatie, algemene array-gebaseerde datatypes, zoals int, string. kunnen ook worden gebruikt voor objectdeduplicatie; laten we eens kijken naar de definitie van de Disdifferentie-methode in C#:



Er is een zware belasting, de eerste parameter wordt toegevoegd, namelijk de uitbreidingsmethode, wat betreft de uitbreidingsmethode, begrijp Baidu alsjeblieft.
Laten we de objectdeduplicatie van Disdinct bestuderen, stel dat we nu een People-klasse hebben:




We declareren een verzameling ListPeole-objecten:

Laten we de Differentie-methode gebruiken op ListPeople zonder enige parameters, en het resultaat is als volgt:



Uit te zien is dat als de Disdifferentie-methode geen parameters heeft, deze p, p1, p2 in de objectset zal dedupliceren, en er geen deduplicatie is voor verschillende objecten met dezelfde lidwaarde van het object.
Nu hebben we een vereiste dat voor mensen met hetzelfde ID, we tellen als dezelfde persoon, de niet-dubbele personen in de set uitvoeren (gewoon één voor dezelfde ID uitvoeren). Op dit moment gebruiken we de tweede methode Distinct, de methode vereist dat de doorgegeven parameters van het type IEqualityComparer zijn, waarbij we een generieke interface erven, voegen we de volgende code toe:


Door de IEqualityComparer-interface te erven, moet je de Equals- en GetHashCode-methoden implementeren.
Wanneer we vergelijken, kunnen we een entiteit met een PeopleCompareByID doorgeven:


De resultaten van de run zijn als volgt:



We hebben het effect van deduplicatie door ID bereikt.
Nu zijn de vereisten weer veranderd, de ID en de provincie zijn dezelfde persoon, om de informatie van de persoon te genereren (dezelfde kan er op willekeur één uitvoeren), op dit moment zien we dat ID=0 en Provincie="Hubei" worden gedupliceerd, om het te dedupliceren hebben we een andere klasse, of erven we van IEqualityComparer:


Evenzo wordt bij gebruik van de Disdifferent-methode een instantie van PeopleCompareByIDAndProvince doorgegeven:

De resultaten na het lopen zijn als volgt:



Bereikt het gewenste effect.
Deze methode kan worden gebruikt bij het probleem van deduplicatie met drie of meer objectleden om te bepalen of het object gedupliceerd is.
Bovenstaande is mijn bescheiden mening.






Vorig:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Volgend:C# Deep Dive - Destructors
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com