微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从EF核心结果中对子列表执行不同的操作

如何解决从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 举报,一经查实,本站将立刻删除。