我在sql server table中有以下数据:
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-to-SQL查询,为每个EmployeeId选择具有max ForMonth和max ForYear的记录。 所以结果应该是:
EmployeeId ForMonth ForYear Value
1 6 2015 35000.00
2 5 2015 80000.00
这不是我在发布这个问题之前没有尝试解决这个问题,但问题是我不知道如何在SQL服务器中编写这个查询,所以我没有任何LINQ代码加。 如果您发现这是一个糟糕的问题,请让我将其删除。
答案 0 :(得分:2)
您只需要每位员工1条记录,因此您需要按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();
答案 1 :(得分:0)
我假设你想要最大ForYear
和最大ForMonth
var result = (from db in MYDBContext
orderby db.ForYear descending, db.ForMonth descending
select db).First();