如何在EF中使用Average与GroupBy?按天计算指定SId的Score平均值
问题分析与修正
你的代码存在两个核心问题:
Include方法用途错误:它是EF Core中用于关联加载导航属性的工具,不能用来执行Average这类聚合计算。- 分组后缺少正确的投影逻辑:
GroupBy操作之后,需要通过Select来提取分组键(日期)和对应的聚合结果。
修正后的代码
var dailyAvgScores = await _context.transactions .Where(b => b.SId == request.Id) .GroupBy(a => a.RawDateTime.Date) .Select(g => new { Date = g.Key, AverageScore = g.Average(v => v.Score) }) .ToListAsync();
说明
- 用
Select替代错误的Include,将每个分组的日期(g.Key)和该组的Score平均值封装成匿名对象(你也可以替换为自定义的DTO类)。 - 执行这段代码后,就能正确获取指定SId下,每日Score的平均值集合。
内容的提问来源于stack exchange,提问作者dave_bell
相关产品推荐
相关产品推荐

