我有一个IEnumerable对象集合。对象的字段为 LastedUpdated ,这是 DateTime 字段。
我希望在给定时间戳的情况下过滤集合,以使用该时间戳和时间段中的“下一条记录”(基于此字段)返回集合中的记录,因为我想要一些代码执行两个不同记录之间的“差异”,以显示已发生的变化。
我正在尝试找出采用集合的最佳方法,并使用LINQ进行此过滤
有什么建议吗?
答案 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
}