【发布时间】:2009-05-06 10:03:45
【问题描述】:
我有一个小问题,我想用 linq 在列表中找到下一个“活动”项目。然后下一个“活动”项目由 startDate 和 EndDate 定义。这是一个示例列表。
//-- Create Lists of turns
IList<Turn> turns= new List<Turn>(){
new Turn(){Name = "Turn 1", StartDate = DateTime.Parse("2009-05-01"), EndDate = DateTime.Parse("2009-05-01") }
, new Turn(){Name = "Turn 2", StartDate = DateTime.Parse("2009-06-01"), EndDate = DateTime.Parse("2009-06-01") }
, new Turn(){Name = "Turn 3", StartDate = DateTime.Parse("2009-07-01"), EndDate = DateTime.Parse("2009-07-02") }
, new Turn(){Name = "Turn 4", StartDate = DateTime.Parse("2009-08-01"), EndDate = DateTime.Parse("2009-08-03") }
}
//-- Get the next Turn by DateTime.
DateTime toDay = DateTime.Parse("2009-06-02");
//-- Should return the "Turn 3" item...
Turn turn = (from item in turns
where .....
select turn).FirstOrDefault<Turn>();
是否有一个很好的解决方案可以通过在 Turn 上使用 startDate/endDate 属性来找到下一个回合。我尝试按 startdate 对列表进行第一次排序,然后在列表中找到第一个,但如果有更“安全”的方法来获取它,我会发现它不需要按正确顺序列出的列表来找到正确的转弯。
【问题讨论】:
-
我已经提出了一个解决方案,但是请您更具体地说明选择合适转弯的条款吗?