我有以下代码行来计算总费用。
var results = dbContext.Logs.Select(x => new
{
Cost = x.Rows.Sum(y => x.Rows.SelectMany(z => z.Organisation.UserRoleRates).Single(z => z.OrganisationId == y.OrganisationId && z.UserRoleId == y.Log.User.UserRole.Id).CostPerHour * y.DurationHours)
}).ToList();
执行此操作后,将引发异常,并显示以下消息
InvalidOperationException:从范围”引用的类型为“ Microsoft.EntityFrameworkCore.Storage.ValueBuffer”的变量“ x”,但未定义
如果我更改为直接调用ToList()
的代码(避免EF执行表达式),它将按预期工作。
var results = dbContext.Logs.ToList().Select(x => new
{
Cost = x.Rows.Sum(y => x.Rows.SelectMany(z => z.Organisation.UserRoleRates).Single(z => z.OrganisationId == y.OrganisationId && z.UserRoleId == y.Log.User.UserRole.Id).CostPerHour * y.DurationHours)
}).ToList();
是否可以使表达式与Entity Framework Core一起使用?