将 SQL 查询转换为使用复数和 group by 的 Linq

Posted

技术标签:

【中文标题】将 SQL 查询转换为使用复数和 group by 的 Linq【英文标题】:Converting SQL query into Linq which used complex sum with group by 【发布时间】:2022-01-07 12:07:09 【问题描述】:

这是我的Service 表的列:

id
serverPlace
count

这是一个我需要将其转换为 Linq 的 SQL 查询:

 SELECT Service.id,
    Service.serverPlace,
    sum(Service.count * 12 + MONTH(getdate())) AS sum
   FROM Service
  GROUP BY Service.id, Service.serverPlace;

我不知道如何用 Linq 转换和实现sum 部分。

【问题讨论】:

这就像普通的带有内存列表的 Linq 还是实体框架? 就像 linq to objects 所以 Linq 正在后台被翻译成 SQL? 是的,它会在后台转换成sql 【参考方案1】:

应该是这样的:

var month = DateTime.Now.Month;
var result = await dbContext.Services.GroupBy(r=> new  r.Id, r.ServerPlace )
            .Select(r=> new 
             r.Key.Id,
             r.Key.ServerPlace,
             Sum = r.Sum(q=> q.Count*12 + month)
            ).ToArrayAsync();

【讨论】:

以上是关于将 SQL 查询转换为使用复数和 group by 的 Linq的主要内容,如果未能解决你的问题,请参考以下文章

如何将此 GROUP BY / MIN SQL 查询转换为 LINQ?

如何将 SQL Inner Join、Group By 转换为 Linq?

将 SqlAlchemy group_by/func 查询转换为 GraphQL

将使用 GROUP BY 的查询从 MySQL 转换为 Postgres 和 SQLite

帮助将 SQL 语句转换为 LINQ Lambda(在 group by 和 sum 方面需要帮助)

使用 MS SQL Server 中的 Group by 字段将垂直 sql 结果转换为水平输出