为什么linq没有像预期的那样进行分组/计数

时间:2014-10-22 06:33:52

标签: linq

我正试图从我的数据库中获得前3个最受欢迎的产品。我有一个名为clicks的表,其中包含点击的产品,以及一些其他非重要字段(如IP,日期等)。

我想查询数据库以计算产品名称相同的总行数,并返回总数和产品名称。

我的linq查询没有做我所希望的。我的代码:

 var results == (from r in this._dc.Clicks
                 group r by r
                 into g
                 orderby g.Count() descending
                 select new { Total = g.Count(), Productc= g.Key.Product }).Take(3).ToList();

问题是,这会返回

等结果
11, Shoes
5, Shirts
4, Shirts 

我原本希望结果是

11, Shoes
9, Shirts
something else

为什么我的Linq没有显示总数?

1 个答案:

答案 0 :(得分:2)

您的分组并非真正对任何内容进行分组。您需要提出一个分组的密钥,而不是实体本身。显然你应该按Product进行分组。

var query =
    (from click in this._dc.Clicks
    group click by click.Product into g
    let count = g.Count()
    orderby count descending
    select new { Product = g.Key, Total = count }).Take(3);