Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 24681|Válasz: 1

[Forrás] C# A differenciák feltételesen dedliklikálnak objektumokat

[Linket másol]
Közzétéve 2018. 08. 17. 10:56:00 | | | |
Általában a Distinct (Distinct) funkciót használjuk C#-ban tömb-deduplikációhoz, általános tömbalapú adattípusokat, mint például int, string. objektum deduplikálásra is használható, nézzük meg C# Distinct metódus definícióját:



Nagy terhelés van, az első paraméter hozzáadódik, ami a bővítési módszer, a bővítési módszerről, kérem, Baidu értse meg.
Tanulmányozzuk a Distinct objektum deduplikálását, tegyük fel, hogy most már van egy People osztályunk:




ListPeole tárgyak gyűjteményét nyilvánítjuk:

Használjuk a Distinct módszert a ListPeople menüben paraméter nélkül, és az eredmény a következő:



Látható, hogy ha a Distinct metódusnak nincs paramétere, akkor deduplikálja p, p1, p2 az objektumhalmazban, és nincs deduplikálás különböző objektumok esetében, amelyek ugyanaz a tagérték az objektum esetében.
Most van egy követelmény, hogy azonos azonosítóval rendelkező személyek esetén ugyanazt a személyt számoljuk, hogy a halmazban lévő nem duplikált személyeket (csak egyet adjunk ki ugyanahhoz az ID-hez), jelenleg a Distinct második módszert használjuk, a módszer megköveteli, hogy a beadott paraméterek IEqualityComparer típusúak legyenek, egy általános interfészt örökölve, hozzáadjuk a következő kódot:


Az IEqualityComparer interfész öröklése után implementálnod kell az Equals és a GetHashCode metódusokat.
Összehasonlításkor egy entitást is beadhatunk egy PeopleCompareByID-vel:


A futás eredményei a következők:



Elértük a deduplikálás hatását az azonosítás alapján.
Most a követelmények ismét megváltoztak, az ID és a tartomány ugyanaz a személy, hogy a személy információit (ugyanaz a személy szabadon is kiadhatja), ekkor látjuk, hogy ID=0 és Province="Hubei" dnuklikáltak, deduplikálni akarjuk, van egy másik osztály, vagy örököljük az IEqualityComparer-től:


Hasonlóképpen, a Distinct módszer használatakor egy PeopleCompareByIDAndProvince példány kerül át:

A futás után az eredmények a következők:



Elértük azt a hatást, amit szerettünk volna.
Ez a módszer akkor alkalmazható, amikor három vagy több objektumtaggal deduplikálás problémája merül fel, hogy megállapítsuk, az objektum duplikált-e.
A fentiek az én szerény véleményem.






Előző:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Következő:C# Mélybúvár - Pusztítók
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com