Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 24681|Atsakyti: 1

[Šaltinis] C# Distinct sąlygiškai pašalina objektų dublikatus

[Kopijuoti nuorodą]
Paskelbta 2018-08-17 10:56:00 | | | |
Paprastai C# naudojame Distinct masyvo dublikatų šalinimui, bendrieji masyvu pagrįsti duomenų tipai, tokie kaip int, string. taip pat gali būti naudojami objektų dublikatų šalinimui, pažvelkime į C# apibrėžimą Distinct metodas:



Yra didelė apkrova, pridedamas pirmasis parametras, kuris yra išplėtimo metodas, apie išsiplėtimo metodą, prašome suprasti Baidu.
Panagrinėkime Distinct objektų dublikatų šalinimą, tarkime, dabar turime žmonių klasę:




Deklaruojame ListPeole objektų rinkinį:

Naudokime "Distinct" metodą "ListPeople" be jokių parametrų, o rezultatas bus toks:



Galima pastebėti, kad jei Distinct metodas neturi parametrų, jis pašalins p, p1, p2 objektų rinkinyje ir nėra dublikatų šalinimo skirtingiems objektams, turintiems tą pačią objekto nario reikšmę.
Dabar mes turime reikalavimą, kad žmonės, turintys tą patį ID, mes skaičiuojame kaip tą patį asmenį, išvesti nepasikartojančius žmones rinkinyje (tiesiog išvesti vieną tam pačiam ID), šiuo metu mes naudojame antrąjį metodą Distinct, metodas reikalauja, kad perduoti parametrai būtų IEqualityComparer tipo, paveldėdami bendrąją sąsają, pridedame šį kodą:


Paveldėdami IEqualityComparer sąsają, turite įdiegti Equals ir GetHashCode metodus.
Kai palyginame, galime perduoti objektą su PeopleCompareByID:


Bėgimo rezultatai yra tokie:



Mes pasiekėme ID dublikatų šalinimo efektą.
Dabar reikalavimai vėl pasikeitė, ID ir provincija yra tas pats asmuo, išvesti asmens informaciją (tas pats gali išvesti vieną savo nuožiūra), šiuo metu matome, kad ID=0 ir Province="Hubei" yra dubliuojami, norėdami jį pašalinti, turime kitą klasę arba paveldėti iš IEqualityComparer:


Panašiai, naudojant Distinct metodą, perduodamas PeopleCompareByIDAndProvince egzempliorius:

Rezultatai po bėgimo yra tokie:



Pasiekėme norimą efektą.
Šis metodas gali būti naudojamas, kai susiduriama su dublikatų šalinimo problema su trimis ar daugiau objekto narių, siekiant nustatyti, ar objektas yra dubliuojamas.
Aukščiau yra mano kukli nuomonė.






Ankstesnis:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Kitą:C# giluminis nardymas - destruktoriai
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com