假设我有一个名为 details
的表,其中包含这些列:
product id = int
product price = float
products' category = nvarchar(50)
此表没有主键(或外键,如果很重要)。
我想执行一个查询,该查询按降序返回一个字符串列表,其中包含 10 个最常见的产品类别(产品所属的类别最多)。
如何执行此查询?
你可以尝试这样的事情:
var tenMostFrequentCategories = products.GroupBy(product=>product.Category)
.OrderByDescending(grp=>grp.Count())
.Select(grp=>grp.Key)
.ToList();
我假设products
是您的数据上下文类。
这是 SQL -
Select top 10 [Category], count(distinct productID) as NumProducts
from details
group by [category]
order by count(distinct productID) desc
group by
将按类别对产品进行计数,然后top 10
仅返回十个最多。 如果第 10 名有并列,它只会选择一个 - 如果您需要它来返回两个,请告诉我。