c# - 在实体框架 C# 中使用 Lambda 编写多个 Sum() SQL 查询
问题描述
下面是我希望转换为 Lambda 的 SQL 查询
SELECT
SUM("Rating" * "Rating") / SUM("Rating")
FROM
public."CustomerRating"
WHERE
"DriverId" = '232'
这是我的 C# 代码:
public double GetDriverAvgRating(string id)
{
var driver = _context.CustomerRating
.AsQueryable()
.Where(d => d.DriverId == id);
var avgDriverRating = // i need to perform that query here
return avgDriverRating;
}
解决方案
我相信 EF 将能够正确地将其翻译为一个分组,例如
var driver = _context.CustomerRating
.Where(cr => cr.DriverId == id)
.GroupBy(cr => cr.DriverId, cr => cr.Rating)
.Select(g => g.Select(r => r * r).Sum() / g.Sum())
.First();
它可能在查询中有一些额外的绒毛(例如一个只产生一个组的组),但我不认为它会对查询的整体性能/规划产生任何重大影响
推荐阅读
- firebase - 如何使用 ML Kit 云文本识别器进行颤振?
- ruby-on-rails - 如何验证文件以在 ruby 或 ruby on rails 中检查多个扩展名
- r - 使用 as.data.frame 形成数据帧时删除 0
- html - 有没有办法使这些列表元素大小相同?
- unit-testing - Tessy 中的序言/结语是什么?
- vue.js - 将参数传递给 v-dialog 而不是路由
- java - 查找特征文件中没有步骤方法定义的所有步骤?
- r - 在 R 的传单中为 fitBounds 添加填充
- python - 当数据框既是 int 又是字符串时,在 Dataframe 中查找行?
- javascript - 尽管正确传递了道具,但 V-for 不输出道具