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代码可以添加。如果你觉得这个问题不好,请让我删除它。

LINQ查询从表中选择记录,其中2列具有最大值

每个员工只需要一条记录,因此需要按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();