2013-04-01 5 views
6

So verwende ich diesen CodeLinq Mit Duplikate zu finden, aber die ganze Platte

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 }) 
        .Where(g => g.Count() > 1) 
        .Select(g=>g.Key); 
    GridView1.DataSource = duplicates; 
    GridView1.DataBind(); 

zu finden und die Liste der Duplikate in einer Tabelle basiert auf addr1 und addr2 zu bekommen. Das einzige Problem mit diesem Code ist, dass es mir nur das Paar von addr1 und addr2 gibt, die Duplikate sind, wenn ich tatsächlich alle Felder der Datensätze anzeigen möchte. (alle Felder wie ID, addr1, addr2, city, state ...)

Irgendwelche Ideen?

Antwort

13

alle Werte zu erhalten, Sie ToList() auf IGrouping

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 }) 
        .Where(g => g.Count() > 1) 
        .Select(g => new {g.Key, Values = g.ToList()}); 
+0

das ist eine wirklich gute Lösung n ... es ist mir nicht in den Sinn gekommen, die Value = g.Tolist() – Nathan

+0

großartige Lösung zu machen. Danke –

8

sollten Sie First() anstelle von Key:

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 }) 
       .Where(g => g.Count() > 1) 
       .Select(g => g.First()); 

Es gibt die erste Zeile jeder doppelten Gruppen

+0

verwenden i mochte auch Ihre Lösung und es ist einfach ... – Nathan

Verwandte Themen