9

所以我正在使用这段代码

    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、city、state...)

有任何想法吗 ?

4

2 回答 2

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()});
于 2013-04-01T16:28:51.787 回答
8

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

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

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

于 2013-04-01T16:26:51.527 回答