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

时间:2015-06-15 20:22:31

标签: c# sql-server linq linq-to-sql

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

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

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

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

如何执行此查询?

2 个答案:

答案 0 :(得分:1)

这是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名的关系,它只会选择一个 - 如果你需要它返回两个,请告诉我。

答案 1 :(得分:1)

您可以尝试这样的事情:

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

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