我有一个带有StartDateTime和EndDateTime的日历事件。这些事件作为记录存储在数据库中。我希望获得特定日期的所有活动。有很多场景可以立即浮现在脑海中。
鉴于特定日期12/01/2011,我希望得到的事件发生在12/01/2011(从凌晨12:00:00到晚上11:59:59)。
所以我需要选择:
StartDateTime和EndDateTime属于12/01/2011 12:00:00 AM和12/01/2011 11:59:00 PM的事件
第二天的事件。那就是StartDateTime是在2011年12月1日晚上11:59:59之前,但EndDateTime是将来的某个时间
EndDateTime于12/01/2011但在晚上11:59:59之前且其StartDateTime在12/01/2011 12:00:00 AM之前的事件
跨越多天的事件。那就是StartDateTime是在12/01/2011 12:00:00 AM之前,EndDateTime是在12/01/2011 11:59:59 PM之后
我可能会错过其他场景。我有一种感觉,这不是一个原始问题,并且有一些方法可以完全满足我的需要。有没有标准的方法来选择这些事件?
答案 0 :(得分:1)
我认为你的4个案例分解为单个语句(伪代码)
if ((StartDate <= InputDate) && (EndDate >= InputDate))
答案 1 :(得分:0)
在结合Jason和X-Zero提出的解决方案之后,这就是我所拥有的。
DateTime inputDateStart = inputDate;
DateTime beginningOfNextDay = inputDate.AddDays(1);
IQueryable<MyEvent> inputDayEvents = (<collection of all the events here>)
.Where(e => e.StartDateTime < beginningOfNextDay && e.EndDateTime >= inputDateStart)
以下是查询的直观表示。