what is the best way to structure this query
我有一个 IEnumerable 对象集合。对象有一个 LastedUpdated 字段,它是一个 DateTime 字段。
我想过滤集合,给定我拥有的时间戳,以及时返回集合中具有该时间戳的记录和"下一条记录"(基于此字段),因为我想要一些代码在两个不同的记录之间做一个"差异"来显示发生了什么变化。
我正在尝试找出获取集合并可能使用 LINQ 进行此过滤的最佳方法
有什么建议吗?
这个怎么样?
1 2 3 4 | var results = (from o in objects where o.lastupdated >= tstamp orderby o.lastupdated select o).Take(2); |
这不是最有效的,但除非你认为性能是一个问题,否则我会认为它最清楚。
1 2 3 4 5 6 7 8 | var objsByDate = objects.OrderBy(x => x.LastedUpdated).ToArray(); int matchIdx = Array.FindIndex(objsByDate, x => x.LastedUpdated == timestamp); if (matchIdx >= 0) { var match = recentObjects[matchIdx]; var next = recentObjects[matchIdx + 1]; // assuming it exists } |