Диапазон дат, попадающий между двумя датами в запросе LINQ - PullRequest
5 голосов
/ 19 октября 2011

Я пытаюсь написать запрос выбора, который возвращает записи, в которых диапазон дат ввода находится между двумя полями дат в запросе LINQ.

Мои входные данные:

  • date1- дата начала
  • дата2 - дата окончания

Мои поля базы данных:

  • AppointmentStart
  • AppointmentEnd

Кроме того, я также хотел бы убедиться, что ввод 14:00 - 15:00 не возвращает значение для 15: 00-16: 00.

return (from t1 in db.Appointments where (t1.AppointmentStart <= date2 && (t1.AppointmentEnd) >= date1)

Если кто-то может помочья с этим, я был бы признателен.

Ответы [ 2 ]

4 голосов
/ 19 октября 2011

Я не на 100% понимаю ваши требования.В первой строке вы запросили записи «где диапазон дат ввода находится между двумя полями дат», но в строке «Дополнительно» вы подразумеваете, что не хотите возвращать записи, в которых дата начала встречи не равнадата окончания вашего ввода.Я считаю, что это два разных требования, поэтому я дам вам два разных запроса.

Первый запрос:

    from t1 in db.Appointments
    where date1 >= t1.AppointmentStart
    where date2 <= t1.AppointmentEnd
    select t1;

Второй запрос:

    from t1 in db.Appointments
    where date2 > t1.AppointmentStart
    where date1 < t1.AppointmentEnd
    select t1;

Первый запрос возвращает записи, которые «содержат» введенные даты.

Второй запрос возвращает записи, которые «перекрывают» введенные даты.

Я думаю, что имеет больше смысла, что вы хотитезапрос перекрытия, и этот ответ будет соответствовать вашему требованию «14:00 - 15:00, не возвращает значение для 15: 00-16: 00».

Дайте мне знать, если я ошибся, понимая вашетребования и необходимо внести какие-либо изменения.

2 голосов
/ 19 октября 2011

Это оглядывается назад.

, если верно следующее:

Дата1 = начало

Дата2 = конец

тогда я думаю, что startdateпосле или равным назначению начала и окончания до или равным назначению или:

return (from t1 in db.Appointments where (date1 >= t1.AppointmentStart && date2 <= t1.AppointmentEnd))

я также изменил парены, потому что они не имели смысла для меня (казалось, что один отсутствовал)

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