如何解决从EF核心结果中对子列表执行不同的操作
在一种情况下,我正在创建报告,并尝试返回所有行,但是有多行的employee_id,salary_id,period_id相等,那么我想选择一个最新的行日期。
例如,
eid sid pid value Date
1 1 1 2000 15-09
1 2 2 4000 10-09
2 3 1 1500 17-09
1 1 1 3000 17-09
2 3 1 3000 13-08
我想回来
eid sid pid value Date
1 1 1 3000 17-09
1 2 2 4000 10-09
2 3 1 1500 17-09
这是我的代码
var Payslips = await reportQuery.Select(es => new
{
// data for any role can access
EmployeeId = es.Id,Histories = es.EmployeeCalculatedSalaryElementHistories
.Where(ecs => ecs.PayrollPeriodId == payrollPeriodId
&& ecs.SalaryElement.Classification == SalaryElementClassification.EMPLOYEE
)
.OrderByDescending(ecs => ecs.CreatedAt)
.AsQueryable()
.Select(selection) // custom data based on role
.GroupBy(e=>e.SalaryElementIdentifier)
.Select(x => x.FirstOrDefault())
.ToList()
})
.AsNoTracking()
//.IgnoreQueryFilters()
.ToListAsync();
但是我出错了
指定的过滤条件无效。
如何使用linq做到这一点?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。