See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 24681|Vastuse: 1

[Allikas] C# Erinevad tingimuslikult dedlikaatsed objektid

[Kopeeri link]
Postitatud 17.08.2018 10:56:00 | | | |
Tavaliselt kasutame C#-s Distinct'i massiivi deduplikeerimise jaoks, üldised massiivipõhised andmetüübid, nagu int, string. võib kasutada ka objekti duplikeerimise jaoks, vaatame C# definitsiooni Distinct meetodile:



Koormus on suur, esimene parameeter lisatakse see, mis on laiendusmeetod, laiendamismeetodi kohta, palun Baidu mõista.
Uurime Distincti objektide deduplikeerimist, oletame, et meil on nüüd People klass:




Kuulutame välja ListPeole'i objektide kogumi:

Kasutame Distinct meetodit ListPeople'is ilma parameetriteta ja tulemus on järgmine:



On näha, et kui Distinct meetodil pole parameetreid, dedreplikeerib see objektide hulgas p, p1, p2 ning erinevatel objektidel, millel on sama liikmeväärtus, deduplikaati ei toimu.
Nüüd on meil nõue, et sama ID-ga inimeste puhul, loeme sama inimesena, et nad väljastaksid hulga mitte-dreplikaatsed inimesed (lihtsalt väljasta üks sama ID jaoks), praegu kasutame teist meetodit Distinct, meetod nõuab, et sisestatud parameetrid oleksid tüüpi IEqualityComparer, pärides üldise liidese, lisame järgmise koodi:


IEqualityComparer liidese pärimisel pead rakendama Equals ja GetHashCode meetodid.
Kui võrdleme, saame sisestada üksuse, millel on PeopleCompareByID:


Jooksu tulemused on järgmised:



Oleme saavutanud identifitseeriva dedluplikatsiooni efekti.
Nüüd on nõuded jälle muutunud, ID ja provints on sama isik, et väljastada isiku info (sama võib väljundit anda soovi korral), sel hetkel näeme, et ID=0 ja Province="Hubei" on dubleeritud, dedlikeerimiseks on meil teine klass või pärime IEqualityComparerilt:


Samamoodi, kui kasutatakse Distinct meetodit, läbitakse PeopleCompareByIDAndProvince eksemplar:

Tulemused pärast jooksu on järgmised:



Saavutasime soovitud efekti.
Seda meetodit saab kasutada, kui esineb kolme või enama objektiliikme dedlikeerimise probleem, et määrata, kas objekt on dubleeritud.
Eelnev on minu tagasihoidlik arvamus.






Eelmine:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Järgmine:C# Sügav sukeldumine - Destructors
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com