构造此查询的最佳方法是什么

时间:2010-08-03 02:34:28

标签: linq collections

我有一个IEnumerable对象集合。对象的字段为 LastedUpdated ,这是 DateTime 字段。

我希望在给定时间戳的情况下过滤集合,以使用该时间戳和时间段中的“下一条记录”(基于此字段)返回集合中的记录,因为我想要一些代码执行两个不同记录之间的“差异”,以显示已发生的变化。

我正在尝试找出采用集合的最佳方法,并使用LINQ进行此过滤

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

这个怎么样?

var results = (from o in objects
  where o.lastupdated >= tstamp
  orderby o.lastupdated
  select o).Take(2);

答案 1 :(得分:0)

这不是最有效的,但除非你认为性能是一个问题,否则我认为它是最清晰的。

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
}