0

我需要帮助来更改我的 API 方法之一。我有几个这样的事件的数据库:

EventName: Event 1 EventDate: 2013-08-15 00:00:00:00.000 isActive: true

EventName: Event 2 EventDate: 2013-08-16 00:00:00:00.000 isActive: true

EventName: Event 3 EventDate: 2013-08-17 00:00:00:00.000 isActive: true

现在,我有这个方法:

public IQueryable<Event> allActiveAndToday(){
     return this.Where(e => e.IsActive)
}

此方法返回上述所有事件,我想将其更改为仅返回同一日期上午 8:00 和第二天上午 8:00 之间的事件。

例如:

  • 如果该方法在 2013 年 8 月 16 日上午 7:00 被调用,结果将是Event 1.
  • 如果该方法在 2013 年 8 月 16 日上午 9:00 被调用,结果将是Event 2.
  • 如果该方法在 2013 年 8 月 17 日上午 7:00 被调用,结果将是Event 2.
  • 如果该方法在 2013 年 8 月 17 日上午 9:00 被调用,结果将是Event 3.

假设这就像每天早上 8:00 开始和结束的一天..

我找不到办法,因为我不熟悉.net 中的选项和上下文。

4

1 回答 1

0

我认为应该这样做:

public IQueryable<Event> allActiveAndToday(){
    DateTime currentDt = DateTime.Now;
    DateTime start = new DateTime(currentDt.Year, currentDt.Month, currentDt.Day, 8, 0, 0);
    DateTime end = start.AddDays(1);

    // This will check if the the current date/time falls between 8AM and 8AM (the following day)
    // If not then set the currentDt to yesterday's date.
    if (!(currentDt >= start && currentDt <= end))
    {
        currentDt = currentDt.AddDays(-1);
    }

    // Then do your query here...
    var events = this.Where(x => x.IsActive && x.EventDate.Date == currentDt.Date).ToList();

    return events;
}
于 2013-09-12T14:27:12.187 回答