2013-04-01 38 views
6

所以我用這個代碼使用LINQ to查找重複,但得到全程記錄

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

找到並列出了重複的基礎上ADDR1 ADDR2和一張桌子。這個代碼唯一的問題是,它只給了我實際上想要顯示記錄的所有字段時重複的addr1和addr2對。 (所有字段,如ID,addr1,addr2,城市,州...)

任何想法?

回答

13

的第一行要獲得所有值,你可以在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

這是一個非常好的解決方案ñ...它沒有穿過我的腦海去做價值= g.Tolist() – Nathan

+0

awsome solution.thank you –

8

您應該使用First()而不是Key

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

它返回每個副本組

+0

使用ToList()我也喜歡你的解決方案,它是直接前進... – Nathan