Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 24681|Atbildi: 1

[Avots] C# Atšķirīgi nosacīti dedublē objektus

[Kopēt saiti]
Publicēts 17.08.2018 10:56:00 | | | |
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.






Iepriekšējo:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Nākamo:C# Deep Dive - Iznīcinātāji
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com