Parasti mēs izmantojam Distinct C# masīva deduplikācijai, vispārējiem masīvu datu tipiem, piemēram, int, string. var izmantot arī objektu deduplikācijai, apskatīsim C# definīciju Distinct metode:
Ir liela slodze, pirmais parametrs tiek pievienots šim, kas ir paplašināšanas metode, par paplašināšanas metodi, lūdzu, Baidu saprot. Izpētīsim Distinct objektu deduplikāciju, pieņemsim, ka mums tagad ir People klase:
Mēs deklarējam ListPeole objektu kolekciju:
Izmantosim Distinct metodi ListPeople bez jebkādiem parametriem, un rezultāts ir šāds:
Var redzēt, ka, ja Distinct metodei nav parametru, tā dedublēs p, p1, p2 objektu kopā, un dažādiem objektiem ar vienu un to pašu objekta dalībnieka vērtību nav dublikātu. Tagad mums ir prasība cilvēkiem ar tādu pašu ID, mēs skaitāmies kā viena un tā pati persona, lai izvadītu cilvēkus, kas nav dublikāti komplektā (vienkārši izvadiet vienu par to pašu ID), šobrīd mēs izmantojam otro metodi Distinct, metode prasa, lai nodotie parametri būtu tipa IEqualityComparer, pārmantojot vispārēju interfeisu, mēs pievienojam šādu kodu:
Pārmantojot IEqualityComparer interfeisu, jums ir jāievieš metodes Equals un GetHashCode. Salīdzinot, mēs varam nodot entītiju ar PeopleCompareByID:
Skrējiena rezultāti ir šādi:
Mēs esam panākuši ID dublēšanas efektu. Tagad prasības ir atkal mainījušās, ID un province ir viena un tā pati persona, lai izvadītu personas informāciju (tas pats var izvadīt vienu pēc vēlēšanās), šobrīd mēs redzam, ka ID=0 un Province="Hubei" ir dublēti, lai to dedublētu, mums ir cita klase vai mantojiet no IEqualityComparer:
Līdzīgi, izmantojot metodi Distinct, tiek nodots PeopleCompareByIDAndProvince gadījums:
Rezultāti pēc skriešanas ir šādi:
Sasniegts vēlamais efekts. Šo metodi var izmantot, ja rodas dublikātu novēršanas problēma ar trim vai vairākiem objekta dalībniekiem, lai noteiktu, vai objekts ir dublēts. Iepriekš minētais ir mans pazemīgais viedoklis.
|