一尘不染

将包含top,count,group和order的SQL转换为LINQ(2个实体)

sql

一些LINQ查询仍然困扰着我。

对于包含两列“页面”和“日期”的表“命中”,我想在定义的时间范围内找到行数最多的页面。

在SQL中,我将使用以下代码:

SELECT TOP 10
      [Page]
      ,COUNT([Page]) as Number
FROM dbo.[Hits]
WHERE [Date] >= CONVERT(datetime,'14 Jan 2009')
AND [Date] < CONVERT(datetime,'15 Jan 2009')
Group BY [Page]
Order by Number DESC

在LINQ中,我不知道该如何处理,有人可以在这里帮助我吗?我尝试使用linqer对其进行转换,但是它只显示该表达式错误。


阅读 216

收藏
2021-03-10

共1个答案

一尘不染

这样的事情应该起作用:

(from p in DataContext.Hits
where (p.Date >= minDate) && (p.Date < maxDate)
group p by p.Page into g
select new { Page = g.Key, Number = g.Count() }).OrderByDescending(x => x.Number).Take(10);
2021-03-10