Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 24681|Odgovoriti: 1

[Vir] C# Distinct pogojno deduplikira objekte

[Kopiraj povezavo]
Objavljeno na 17. 08. 2018 10:56:00 | | | |
Običajno uporabljamo Distinct v C# za deduplikacijo polj, splošne podatkovne tipe na osnovi polj, kot so int, string. lahko se uporablja tudi za deduplikacijo objektov, poglejmo C#-jevo definicijo metode Distinct:



Obstaja velika obremenitev, prvi parameter se doda, to je metoda raztezanja, o metodi razširitve, prosim, Baidu razume.
Preučimo Distinctovo deduplikacijo objektov, recimo, da imamo zdaj razred People:




Deklariramo zbirko objektov ListPeole:

Uporabimo metodo Distinct na ListPeople brez parametrov, rezultat pa je naslednji:



Vidimo lahko, da če metoda Distinct nima parametrov, bo deduplikirala p, p1, p2 v množici objektov in ni deduplikacije za različne objekte z enako vrednostjo člana objekta.
Zdaj imamo zahtevo, da ljudje z istim ID-jem, ki jih štejemo kot ista oseba, izpišejo ne-podvojene osebe v množici (preprosto izpišemo eno za isti ID), v tem času uporabimo drugo metodo Distinct, ki zahteva, da so parametri, ki jih prenesemo, tipa IEqualityComparer, podedujejo generični vmesnik, dodamo naslednjo kodo:


Z dedovanjem vmesnika IEqualityComparer morate implementirati metode Equals in GetHashCode.
Ko primerjamo, lahko dodamo entiteto z PeopleCompareByID:


Rezultati vožnje so naslednji:



Dosegli smo učinek deduplikacije z ID.
Zdaj so se zahteve spet spremenile, ID in provinca sta ista oseba, da izpiše podatke o osebi (ista lahko izpiše podatke po želji), v tem trenutku vidimo, da sta ID=0 in Provinca="Hubei" podvojena, za deduplikacijo imamo še en razred ali podedujemo iz IEqualityComparerja:


Podobno se pri uporabi metode Distinct posreduje instanca PeopleCompareByIDAndProvince:

Rezultati po teku so naslednji:



Dosegli smo želeni učinek.
Ta metoda se lahko uporabi pri problemu deduplikacije s tremi ali več člani objekta, da se ugotovi, ali je objekt podvojen.
Zgornje je moje skromno mnenje.






Prejšnji:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Naslednji:C# Deep Dive - Destructors
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com