【发布时间】:2019-09-19 11:00:48
【问题描述】:
我正在尝试用过去四个月的总金额(总和)填充图表数据,在视觉上它看起来像这样:
到目前为止,我已经尝试按年和月对数据进行分组,但我不确定这是否正确,因为这不起作用..
代码如下:
var testQUERY = await _context.Calculation
.AsNoTracking()
.Where(x => (x.PaymentDate != null && x.PaymentDate > DateTime.UtcNow.AddMonths(-4)))
.GroupBy(x => new { x.PaymentDate.Value.Year, x.PaymentDate.Value.Month}).ToListAsync();
我想知道如何只按月分组.. 我面临的错误是下一个:
为警告生成错误 'Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning: LINQ 表达式 'GroupBy(new f__AnonymousType0`2(Year = 转换([p].PaymentDate, DateTime).Year, Month = Convert([p].PaymentDate, DateTime).Month), [p])' 不能 翻译并将在当地进行评估。'。这个异常可以 通过传递事件 ID 抑制或记录 'RelationalEventId.QueryClientEvaluationWarning' 到 'DbContext.OnConfiguring' 中的 'ConfigureWarnings' 方法或 'AddDbContext'。
P.S 如果我想更好,因为我正在使用
x.PaymentDate != null && x.PaymentDate > DateTime.UtcNow.AddMonths(-4)
我不需要新的匿名类型,其中我也包括年份.. 但我不自觉地试图按不存在的列分组.. ?
【问题讨论】:
-
@dfhwze 我不确定这如何解决我的问题?
-
您的问题可以通过使用 ToList() 或其他东西实现结果然后执行分组来解决
-
@dfhwze 如果我将 groupBy 直接应用于我从 DB 获取的数据,或者如果我将其存储到某个变量而不是将 groupBy 应用于相同的数据,这不一样..
-
这完全取决于 LINQ to EF 提供程序能够从 LNQ 映射到查询的内容。似乎并非所有 GroupBy 构造都是可翻译的。