查询最受欢迎的行

时间:2014-11-19 20:43:28

标签: c# sql linq

基本上尝试为我的查询计划逻辑,该逻辑将计算每次使用某一行的次数(我不需要我需要的次数或任何东西来订购按主要使用行值的产品。)

示例:

我有购买 购买表有一行名为'product_id' 我现在尝试查询此表,查找使用SAME product_id的次数,然后按照使用product_id的最高次数对查询进行排序。

我尝试了一些事情,但是我对实际逻辑有点迷失,所以我完全明白我所尝试的东西不起作用(在我的头脑中没有意义,但我不得不尝试一些东西)。

        var grabProducts = db.fixed_purchases.GroupBy(fp => fp.product_id)
            .Select(fp => new fixed_purchases
            {
                Count = fp.Count()
            }).ToList();

我现在能做的最好的事情。再次,逻辑是我迷失的地方。我不一定需要答案,但逻辑会做得很好。

我正在使用ASP C#Linq,但考虑到这是一个SQL问题并不重要,所以请不要看Linq,我只想发布我正在尝试的代码。

1 个答案:

答案 0 :(得分:1)

您只需要在OrderBy之后使用GroupBy子句根据计数对组进行排序:

var grabProducts = db.fixed_purchases
               .GroupBy(fp => fp.product_id)
               .OrderByDescending(g => g.Count());

然后,如果您想让产品ID按降序排序,您可以添加Select

var grabProducts = db.fixed_purchases
               .GroupBy(fp => fp.product_id)
               .OrderByDescending(g => g.Count())
               .Select(g => g.Key)  
               .ToList();