代码之家  ›  专栏  ›  技术社区  ›  user215675

C LINQ查找重复行

  •  3
  • user215675  · 技术社区  · 15 年前

    Name              City
    
    Joe         Houston   
    Jerry       London    
    Alex        Houston   
    Jerry       London    
    

    如何使用LINQ LIKE返回重复行

    SQL

    SELECT name, city, count(*)
    FROM collection
    GROUP BY name,city 
    HAVING count(*) > 1
    

    我试了些东西

    var qry =
                    from m in context.Collections
                    group m by new { m.city, m.name } into grp
                    select new { rp = grp.Count() > 2 };
    
    2 回复  |  直到 6 年前
        1
  •  14
  •   Jon Skeet    15 年前

    您需要一个Where,而不是Select:

    var qry =  from m in context.Collections
               group m by new { m.city, m.name } into grp
               where grp.Count() > 1
               select grp.Key;
    
        2
  •  0
  •   Jorge Rodrigues dos Santos    6 年前

    建立在 @乔恩·斯基特 的答案是“一行”选项,返回重复的值,而不仅仅是键:

    var duplicates = db.Collections.GroupBy(a => new { m.city, m.name })
                                   .Where(a => a.Count() > 1)
                                   .SelectMany(a => a.ToList());