Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 24681|Odpoveď: 1

[Zdroj] C# Distinct podmienečne deduplikuje objekty

[Kopírovať odkaz]
Zverejnené 17. 8. 2018 10:56:00 | | | |
Zvyčajne používame Distinct v C# na deduplikáciu polí, všeobecné dátové typy založené na poliach, ako int, string. môže sa použiť aj na deduplikáciu objektov, pozrime sa na definíciu metódy Distinct v C#:



Je tam veľké zaťaženie, pridáva sa prvý parameter, ktorý je metóda rozťahovania, o metóde rozťahovania, prosím, Baidu pochop.
Poďme študovať deduplikáciu objektov v Distinct, povedzme, že teraz máme triedu People:




Deklarujeme kolekciu objektov ListPeole:

Použime metódu Distinct na ListPeople bez akýchkoľvek parametrov a výsledok je nasledovný:



Je vidieť, že ak metóda Distinct nemá parametre, deduplikuje p, p1, p2 v množine objektov a neexistuje deduplikácia pre rôzne objekty s rovnakou hodnotou člena objektu.
Teraz máme požiadavku, aby ľudia s rovnakým ID, ktorých počítame ako tá istá osoba, vypísali neduplikované osoby v množine (stačí vypísať jednu pre rovnaké ID), v tomto čase používame druhú metódu Distinct, ktorá vyžaduje, aby parametre zadané boli typu IEqualityComparer, zdedené generické rozhranie, pridávame nasledujúci kód:


Dedičstvom rozhrania IEqualityComparer musíte implementovať metódy Equals a GetHashCode.
Pri porovnaní môžeme zadať entitu s PeopleCompareByID:


Výsledky jazdy sú nasledovné:



Dosiahli sme efekt deduplikácie pomocou ID.
Teraz sa požiadavky opäť zmenili, ID a provincia sú tá istá osoba, na výstup informácií o osobe (tá istá môže vypísať podľa potreby), v tomto momente vidíme, že ID=0 a Provincia="Hubei" sú duplikované, na deduplikáciu máme inú triedu alebo dedíme z IEqualityComparer:


Podobne, pri použití metódy Distinct sa odosiela inštancia PeopleCompareByIDAndProvince:

Výsledky po behu sú nasledovné:



Dosiahli sme požadovaný efekt.
Táto metóda sa môže použiť pri probléme deduplikácie s tromi alebo viacerými členmi objektu na určenie, či je objekt duplikovaný.
Vyššie uvedené je môj skromný názor.






Predchádzajúci:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Budúci:C# Deep Dive - Destructors
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com