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

如何使用linqtosqlgroupby列出重复的记录?

  •  1
  • jlp  · 技术社区  · 16 年前

    假设我有两个表:Category和Product。我想使用linqtosql来选择具有重复产品的所有类别(包括产品)。 我的查询如下所示:

    from p in db.Products
    group p by p.CategoryId into c
    select new 
    {
     categoryId = c.Key,
     products = from PbyC in c 
     group PbyC by PbyC.Name into dupl
     where dupl.Count() > 1
     select dupl;
    }
    

    它可以工作,但是LINQPad列出了空的类别(没有任何重复的产品)。如何修改查询?

    最好以某种方式显示类别名称而不是Id。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Dave D    16 年前
    db.Products.GroupBy(p => new { p.Name, p.CategoryId })
               .Select(g => new { g.Key.CategoryId, Count = g.Count })
               .Where(ng => ng.Count > 1)
               .Select(ng => ng.CategoryId);
    

    这将选择具有多个同名产品的类别的id,并且假设对象之间没有设置任何关系,因此需要将结果与 Categories 获取详细信息的表。

    CategoryId Category (或任何相关对象的名称)然后选择 Category.Name Select .