[英]How to use linq-to-sql group by to list duplicated records?
假设我有两个表:Category和Product。 我想使用linq-to-sql选择具有重复产品的所有类别(与产品一起)。 我的查询是这样的:
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。
编辑:我有表之间的关系。
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
(或任何相关的对象命名),然后在最后一个Select
选择Category.Name
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.