我正在尝试使用LINQ获取状态历史记录的最新状态。我的订单有问题,或者我完全不合适。
我的代码
Dim LatestStatusTable= (From RecordHistoryTable In db.RecordHistory) _
.GroupBy(Function(i) i.Status).[Select](Function(i) i.First())
示例数据
Data
ID Timestamp Status
251 2017-07-19 11:01:15.577 2
250 2017-07-14 16:15:38.543 2
249 2017-07-13 13:31:13.010 2
249 2017-07-14 04:16:08.307 1
249 2017-07-14 05:45:38.437 2
249 2017-07-14 08:00:42.253 1
249 2017-07-14 08:30:02.380 2
248 2017-07-11 15:30:28.223 2
248 2017-07-11 18:31:11.857 1
248 2017-07-11 18:49:08.510 2
Desired Output
ID Timestamp Status
251 2017-07-19 11:01:15.577 2
250 2017-07-14 16:15:38.543 2
249 2017-07-14 08:30:02.380 2
248 2017-07-11 18:49:08.510 2
有人可以教育我并指出正确的方向吗?
答案 0 :(得分:2)
GroupBy ID
然后在选择时,您希望在OrderByDescending
上Timestamp
,然后在每个组中First
。
Dim LatestStatusTable = (From RecordHistoryTable In db.RecordHistory) _
.GroupBy(Function(i) i.ID) _
.[Select](Function(g) g.OrderByDescending(Function(x) x.Timestamp).First())