2015-02-25 6 views
5

Ich habe eine Liste vom Typ MyClassDuplikate entfernen aus der Liste basierend auf mehreren Feldern oder Spalten

public class MyClass 
{ 
    public string prop1 {} 
    public int prop2 {} 
    public string prop3 {} 
    public int prop4 {} 
    public string prop5 {} 
    public string prop6 {} 
    .... 
} 

Diese Liste Duplikate haben. Ich möchte Elemente aus dieser Liste finden und entfernen, wobei prop1, prop2 und prop3 Duplikate sind. Es spielt keine Rolle, ob die anderen Eigenschaften Duplikate sind

Dies ist, was ich versucht habe, die nicht funktioniert.

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3}).Where(g => g.Count() > 1).Select(g=> g.Key); 

Ich möchte keine Drittanbieter-Tools dafür verwenden. Nur reine linq.

+1

Was meinen Sie mit _nicht arbeiten_? Sie erhalten eine Ausnahme oder Fehlermeldung? Was bekommst du als Ergebnis? –

+0

Ich bekomme eine Ausnahme Kann den Typ 'System.Collections.Generic.IEnumerable ' nicht zu 'System.Collections.Generic.List ' implizit konvertieren. Eine explizite Konvertierung existiert (fehlt Ihnen ein Cast?) – user20358

+0

wenn Sie eine ToListe am Ende der Select setzen (g => g.Key) ... bekomme ich "Kann den Typ 'System.Collections.Generic.List' nicht implizit konvertieren AnonymousType # 1> 'zu' System.Collections.Generic.List ' – user20358

Antwort

13

Dies wird wieder ein Element für jeden "Typ" (wie ein Distinct) (also, wenn Sie A, A, B, C, es wird eine Rückkehr, B, C)

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3}) 
            .Select(d => d.First()) 
            .ToList(); 

Wenn Sie möchten, nur die Elemente, die keine Duplikate haben (wenn Sie also A, A, B, C haben, gibt es B, C):

+0

Was, wenn Sie das gleiche tun müssen mit einem 'Datatable' anstelle von' MyClass'? – Jogi

+0

@RehanKhan Völlig andere Frage ... Stellen Sie eine neue Frage darüber, einfacher. – xanatos

+0

wenn Sie sind interessiert, [hier] (http://stackoverflow.com/questions/37154701/distinct-on-multiple-columns-in-datatable?noredirect=1#comment61846505_37154701) ist diese Frage. – Jogi

Verwandte Themen