Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 24681|Risposta: 1

[Fonte] C# Distinti deduplica condizionalmente gli oggetti

[Copiato link]
Pubblicato su 17/08/2018 10:56:00 | | | |
Di solito, usiamo Distinct in C# per la deduplicazione degli array, i tipi di dati generali basati su array, come int, string. possono essere usati anche per la deduplicazione degli oggetti, diamo un'occhiata alla definizione di metodo Distinct di C#:



C'è un carico pesante, il primo parametro viene aggiunto, cioè il metodo di espansione, riguardo al metodo di espansione, per favore Baidu capisca.
Studiamo la deduplicazione degli oggetti di Distinct, supponiamo che ora abbiamo una classe Persone:




Dichiariamo una raccolta di oggetti ListPeole:

Usiamo il metodo Distinct su ListPeople senza alcun parametro, e il risultato è il seguente:



Si può vedere che se il metodo Distinct non ha parametri, deduplicerà p, p1, p2 nell'insieme degli oggetti, e non c'è deduplicazione per oggetti diversi con lo stesso valore di elemento dell'oggetto.
Ora abbiamo un requisito: per le persone con lo stesso ID, contiamo come la stessa persona, di produrre le persone non duplicate nel set (ne produciamo solo una per lo stesso ID), al momento usiamo il secondo metodo Distinct, il metodo richiede che i parametri passati siano di tipo IEqualityComparer, ereditando un'interfaccia generica, aggiungiamo il seguente codice:


Ereditando l'interfaccia IEqualityComparer, devi implementare i metodi Equals e GetHashCode.
Quando confrontiamo, possiamo far passare un'entità con un PeopleCompareByID:


I risultati della corsa sono i seguenti:



Abbiamo raggiunto l'effetto della deduplicazione tramite ID.
Ora i requisiti sono cambiati di nuovo, l'ID e la provincia sono la stessa persona, per fornire le informazioni della persona (che possono esserne una a piacimento), a questo punto vediamo che ID=0 e Province="Hubei" sono duplicati, per deduplicarlo abbiamo un'altra classe, o ereditiamo da IEqualityComparer:


Analogamente, utilizzando il metodo Distinct, viene approvata un'istanza di PeopleCompareByIDAndProvince:

I risultati dopo la corsa sono i seguenti:



Abbiamo ottenuto l'effetto che volevamo.
Questo metodo può essere utilizzato quando si incontra il problema della deduplicazione con tre o più membri dell'oggetto per determinare se l'oggetto è duplicato.
Quanto sopra è la mia umile opinione.






Precedente:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Prossimo:C# Immersione Profonda - Distruttori
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com