Как получить события календаря на конкретную дату? - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть событие календаря с StartDateTime и EndDateTime.Эти события хранятся в виде записей в базе данных.Я хочу получить все события на конкретную дату.Есть несколько сценариев, которые приходят на ум сразу.

Учитывая конкретную дату 12/01/2011, я хочу получать события, которые выпадают на 12/01/2011 (с 12:00:00 до 23:59:59 PM).

Итак, мне нужно выбрать:

  1. События, чьи значения StartDateTime и EndDateTime попадают в диапазон от 12/01/2011 до 12:00:00 и 12/01/201111:59:00 PM

  2. События, охватывающие следующий день.То есть StartDateTime состоится 01.12.2011 г. до 23:59:59, но EndDateTime когда-нибудь появится в будущем

  3. События, EndDateTime которых состоится 01.12.2011, но до 11:59: 59 вечера и чей StartDateTime до 12/01/2011 12:00:00 AM

  4. События, которые охватывают несколько дней.То есть StartDateTime до 12/01/2011 12:00:00, а EndDateTime после 12/01/2011 11:59:59

Возможно, мне не хватает других сценариев.У меня такое чувство, что это не оригинальная проблема, и есть методы, которые делают именно то, что мне нужно.Есть ли стандартный способ выбора этих событий?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Я думаю, что ваши 4 случая сводятся к одному утверждению (псевдокод)

if ((StartDate <= InputDate) && (EndDate >= InputDate))
0 голосов
/ 02 ноября 2011

После объединения решений, предложенных Джейсоном и 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)

Вот визуальное представление запроса.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...