当前位置: 首页 > 面试题库 >

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

何聪
2023-03-14
问题内容

一些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对其进行转换,但是它只显示该表达式错误。


问题答案:

这样的事情应该起作用:

(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);


 类似资料:
  • 问题内容: 我有一个在SQL中完美运行的查询,但是我有最糟糕的时间将其转换为linq。该表(下面的表1)保存了多种记录类型的状态更改。联接需要设置两个字段以创建有效联接:SubmissionId(状态所属的表的pk)和SubmissionTypeId(确定状态所属的表)。 我已经尝试过使用x.DefaultIfEmpty()中的y到x进行多次迭代,并且无法在正确的位置设置where子句。我需要从T

  • 问题内容: 我计划在子查询中使用它,但无法找出将以下查询转换为LINQ的正确语法: 问题答案:

  • 问题内容: 我有这样的SQL(5天前在哪里): 我希望它每天返回一个值,因此在这种情况下(5天前到今天)它将返回5个结果。 但是,如果说昨天是0,则不会返回该日期的所有数据,而是返回零。 如何更改该SQLite查询,使其还返回计数为0的数据? 问题答案: 如果不进行复杂的查询(我认为),您的输出数据集将不包含输入数据集中不存在的日期。这意味着您需要一个5天的数据集才能加入。 简单的版本是用5个日期

  • 问题内容: 我正在尝试使用PHP从MySQL的表中选择最后一条记录。我相信我有一个SQL错误。这是我的SQL代码: 如果这是有效的,并且我实际上有PHP错误,请告诉我。 问题答案: 您的SQL语法无效。使用 LIMIT 代替 试试这个: 该子句适用于MSSQL服务器。

  • 问题内容: 我正在处理包含3个表的数据库: 公司名单 他们出售的产品表 他们在每个日期提供的价格表 我在php中进行这样的查询,以生成在特定日期提供特定产品类型最低价格的公司列表。 这为我获取了我需要的数据,但是为了在PHP中实现寻呼机,我需要知道总共有多少家公司提供该产品。LIMIT表示我只看到前几个… 我尝试将SELECT子句更改为SELECT COUNT(a.id)或SELECT COUNT

  • 问题内容: 我需要将该SQL查询转换为Linq: 我尝试了以下代码,但在“ a.ArticleName”处收到错误消息,提示“ ArticleName”的定义将丢失。 你们中有人有人知道如何解决此问题吗? 谢谢你的帮助! 问题答案: 您收到此错误是因为分组未返回,但 您需要更改代码以使用: