簡體   English   中英

如何使用linq-to-sql group by列出重復的記錄?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM