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.
|