[英]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.