LINQ查询从表中选择记录,其中2列具有最大值
本文关键字:2列 其中 最大值 记录 查询 选择 LINQ | 更新日期: 2023-09-27 18:01:10
我在sql server表中有以下数据:
EmployeeId ForMonth ForYear Value
1 1 2015 45000.00
1 6 2015 35000.00
1 12 2014 66666.00
2 1 2015 70000.00
2 5 2015 80000.00
我需要找到LINQ到SQL查询,为每个EmployeeId选择具有最大ForMonth和最大ForYear的记录。所以结果应该是:
EmployeeId ForMonth ForYear Value
1 6 2015 35000.00
2 5 2015 80000.00
这并不是说我在来发布这个问题之前没有尝试解决这个问题,但问题是我不知道如何在SQL server中编写这个查询,所以我没有任何LINQ代码可以添加。如果你觉得这个问题不好,请让我删除它。
每个员工只需要一条记录,因此需要按ID分组。然后按最近的年/月排序,并选择第一条
var query = from e in db.Employees
group e by e.EmployeeId into g
select g.OrderByDescending(e => e.ForYear)
.ThenByDescending(e => e.ForMonth)
.FirstOrDefault();
我假设您想要具有最大ForYear
和最大ForMonth
的记录
var result = (from db in MYDBContext
orderby db.ForYear descending, db.ForMonth descending
select db).First();