关于 linq:构建此查询的最佳方法是什么

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
}