2013-05-16 8 views
5

Ho un elenco di tipi personalizzati in cui voglio rimuovere il duplicato e l'originale se viene trovato un duplicato. Può essere solo un possibile duplicato.Rimuovi duplicati e originale dall'elenco C#

Posso sovrascrivere Equals e GetHashCode e quindi utilizzare Distinct ma questo rimuove solo il duplicato. Devo rimuovere sia l'originale che il duplicato ... Qualsiasi idea per qualcosa di elegante, quindi non devo usare un martello.

+1

inserire il codice pertinente. –

+1

puoi fornire un esempio codificato di ciò con cui stai lavorando e questo aiuterà gli altri a capire cosa stai cercando di fare – MethodMan

risposta

6

È possibile utilizzare GroupBy, seguito da Where (g => g.Count() == 1) per filtrare tutti i record che hanno duplicati:

var res = orig.GroupBy(x => x).Where(g => g.Count() == 1).Select(g => g.Key); 

Al fine di far funzionare tutto questo, è comunque necessario eseguire l'override GetHashCode e Equals.

+0

Come un incantesimo ...! –

3
var itemsExistingExactlyOnce = list.GroupBy(x => x) 
    .Where(group => group.Count() == 1) 
    .Select(group => group.Key); 
Problemi correlati