实体框架 - 获取所有重复的人员

时间:2014-02-20 23:56:24

标签: c# linq entity-framework entity-framework-5

实体框架6

我有人员实体

ID
FirstName
LastName

我需要制作一份报告,其中列出了所有具有相同名字姓氏的人。分组给我起了名字,但不是所有的ID。

所以我需要所有重复的完整人物实体:

 117 John Smith
 247 John Smith

是否可以获得重复的查询?

2 个答案:

答案 0 :(得分:2)

如果您执行此类操作(假设pers是使用EF从DB获取的人员列表):

var x = pers.GroupBy(p => p.FirstName + p.LastName).Where(g => g.Count() > 1).Select(g => g.ToList());

您将获得IEnumerable<List<Person>>,其中每个List都具有每个Person的所有属性(我假设Person类具有相应的属性)。

例如,您现在可以:

foreach(var y in x)
{
    foreach(var z in y)
    {
        Console.WriteLine(string.Format("{0}: {1} {2}", z.ID, z.FirstName, z.LastName));
    }
}

干杯

答案 1 :(得分:0)

GroupBy会这样做。诀窍就是你如何从小组中选择。

var dupes = people.GroupBy(e => new { e.FirstName, e.LastName })
    .Where(e => e.Count() > 1)
    .Select(e => new
    {
        e.Key.FirstName,
        e.Key.LastName,
        Entities = e.ToList()
    });