将 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