使用Linq查找重复但获得整个记录

Nat*_*han 8 c# linq duplicates

所以我使用这段代码

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

查找并列出基于addr1和addr2的表中的重复项.这段代码唯一的问题是它只给我一对addr1和addr2,当我真正想要显示记录的所有字段时,它们是重复的.(所有字段,如ID,addr1,addr2,城市,州......)

有任何想法吗 ?

Ily*_*nov 14

要获取所有值,您可以使用ToList()onIGrouping

var duplicates = mg.GroupBy(i => new { i.addr1, i.addr2 })
                   .Where(g => g.Count() > 1)
                   .Select(g => new {g.Key, Values = g.ToList()});
Run Code Online (Sandbox Code Playgroud)


cuo*_*gle 8

您应该使用First()而不是Key:

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

它返回每个重复组的第一行