Normalt bruger vi Distinct i C# til array-deduplikering, generelle array-baserede datatyper som int, string. kan også bruges til objektdeduplikering, lad os se på C#'s definition af Differentie-metoden:
Der er en tung belastning, den første parameter tilføjes, nemlig udvidelsesmetoden, og Baidu forstår venligst udvidelsesmetoden. Lad os studere Disdincts objektdeduplikation, lad os sige, at vi nu har en People-klasse:
Vi erklærer en samling af ListPeole-objekter:
Lad os bruge Differentie-metoden på ListPeople uden nogen parametre, og resultatet er som følger:
Det kan ses, at hvis Disdifferent-metoden ikke har parametre, vil den deduplikere p, p1, p2 i objektsættet, og der er ingen deduplikering for forskellige objekter med samme medlemsværdi som objektet. Nu har vi et krav, for personer med samme ID, vi tæller som den samme person, for at outputte de ikke-duplikerede personer i sættet (bare output én for samme ID), på dette tidspunkt bruger vi den anden metode Distinct, metoden kræver, at parametrene, der sendes ind, er af typen IEqualityComparer, og vi arver et generisk interface, vi tilføjer følgende kode:
Ved at overtage IEqualityComparer-grænsefladen skal du implementere Equals- og GetHashCode-metoderne. Når vi sammenligner, kan vi indtaste en enhed med et PeopleCompareByID:
Resultaterne af løbet er som følger:
Vi har opnået effekten af deduplikation ved ID. Nu er kravene ændret igen, ID og provins er den samme person, for at udlevere personens information (den samme kan udlevere én efter behag), på dette tidspunkt ser vi, at ID=0 og Province="Hubei" duplikeres, for at deduplicere det har vi en anden klasse, eller arver fra IEqualityComparer:
Tilsvarende, når man bruger Differentie-metoden, sendes en instans af PeopleCompareByIDAndProvince:
Resultaterne efter løb er som følger:
Opnåede den effekt, vi ønskede. Denne metode kan bruges, når man støder på problemet med deduplikation med tre eller flere objektmedlemmer for at afgøre, om objektet er duplikeret. Ovenstående er min ydmyge mening.
|