从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 (将#修改为@)