我正试图从我的数据库中获得前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没有显示总数?
答案 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);