sql 列中 10 个最常见的值 - linq to sql

10 most frequent value in sql column - linq to sql

假设我有一个名为 details 的 table,其中包含以下列:

product id = int
product price = float
products' category = nvarchar(50)

此 table 没有主键(或外键,如果有的话)。

我想执行一个查询,其中 returns 一个字符串列表,其中包含 10 个最常见的产品类别(产品最多的类别),按降序排列。

如何执行此查询?

这是 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 return 最多只有十个。如果有并列第 10 名,它只会选择一个 - 如果您需要 return 两者,请告诉我。

您可以尝试这样的操作:

var tenMostFrequentCategories = products.GroupBy(product=>product.Category)
                                        .OrderByDescending(grp=>grp.Count())
                                        .Select(grp=>grp.Key)
                                        .ToList();

我假设 products 是您的数据上下文 class。