如何使用 SUM 计算将 SQL 转换为 Linq

Posted

技术标签:

【中文标题】如何使用 SUM 计算将 SQL 转换为 Linq【英文标题】:How to convert SQL to Linq with SUM calculation 【发布时间】:2020-04-28 01:52:27 【问题描述】:

有人可以帮我将 SQL 转换为 Linq 吗?我是 Linq 的新手,需要一些帮助....

我的 SQL 查询字符串是;

SELECT *, Sum(RequisitionQTY*RequisitionPrice) as Total 
FROM partrequisition 
WHERE ReferenceNumber = searchModel.ReferenceNumber 
GROUP BY 'ReferenceNumber'

到目前为止我得到的是

var result = db.partrequisition
    .Where(c => c.ReferenceNumber == searchModel.ReferenceNumber)
    .GroupBy(c => c.ReferenceNumber)
    .Select( <??> );

不明白如何进行计算并将其构建到 Linq..

谢谢...

【问题讨论】:

【参考方案1】:

像这样?结果将是每个参考编号的总和列表

var result = db.partrequisition
    .Where(c => c.ReferenceNumber == searchModel.ReferenceNumber)
    .GroupBy(c => c.ReferenceNumber)
    // For each group, calculate the sum
    .Select(g=> g.Sum( item=>item.RequisitionQTY*item.RequisitionPrice ))
    .ToList();

【讨论】:

谢谢.. 我收到十进制错误消息?不包含“SelectMany”的定义,并且找不到接受“十进制”类型的第一个参数的扩展方法“SelectMany”。当前上下文中不存在名称“SelectMany”。 在 Sum() 调用之后缺少一个“)”。尝试将其添加回来。 再次感谢您.. 错误消息 无法将类型 'System.Collections.Generic.List' 隐式转换为 'System.Data.Entity.DbSet' 与 DbSet 相关的问题超出了原始 OP 的范围。正如我所说,这里的结果是一种 List。如何将结果反馈到您的数据库,值得另一个问题

以上是关于如何使用 SUM 计算将 SQL 转换为 Linq的主要内容,如果未能解决你的问题,请参考以下文章

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

如何通过 LINQ 将 TimeSpan 计算转换为 SQL

将包含 where、group by、sum 和必须的 MySQL 语句转换为 Linq to Sql

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

如何将以下 SQL 语句转换为 LINQ 方法语法

如何将SQL查询转换为LINQ?