给出类似下面的内容(仅作为示例一起抛出)
Employee ID | Time In | Position | Shift Length 1 | April 1 08:00 | Manager | 8 0 | April 1 08:00 | Maint | 8 1 | April 2 08:00 | Manager | 8 2 | April 1 08:00 | Clerk | 4 1 | April 3 08:00 | Manager | 8 0 | April 2 12:00 | Maint | 1 0 | April 3 12:00 | Maint | 4
如果给定特定日期,我需要能够检索该日期之前发生的每个员工ID的最新记录(仅基于时间)
因此,如果给定的日期是,例如
4月3日5:00我希望看到以下行回来
Employee ID | Time In | Position | Shift Length 1 | April 2 08:00 | Manager | 8 2 | April 1 08:00 | Clerk | 4 0 | April 2 14:00 | Maint | 1
我需要为每场比赛返回整个记录。
我还需要确保在按员工ID过滤之前,根据给定日期评估记录。我不想获得每位员工的最新记录,然后根据日期对其进行测试。
感谢您的帮助。
答案 0 :(得分:7)
听起来你想要这样的东西:
var query = from row in context.Whatever
where row.TimeIn < specifiedDate
group row by row.EmployeeID into g
select g.OrderByDescending(r => r.TimeIn).First();
所以步骤是:
(另一种方法是使用g.OrderBy(r => r.TimeIn).Last()
- 我不知道对生成的SQL会有什么不同。)