c # Запрос перекрывающейся даты - PullRequest
0 голосов
/ 27 ноября 2018

Я хочу проверить, зарезервирован ли этот конкретный номер:

bool overlaps = false;

Этот способ находит только first roomId со значением 5 потому что это FirstOrDefault();

var room = (from u in db.Reservation
             where u.RoomId == roomId
             select u  
           ).FirstOrDefault();

if((StartDateWantToBook <= room.EndDate) && (room.StartDate <= EndDateWantToBook))
{
     overlaps = true;
     MessageBox.Show("This room is already reserved");
}
else
{
   // Process to reserv this room
overlaps = false;
}

Но если у меня есть roomId со значением 5 в нескольких строках с разными датами начала и окончания, я думаю, что вместо этого я должен использовать Tolist().Может быть так:

var room = (from u in db.Reservation
            where u.RoomId == roomId
            select u  
           ).Tolist();

Вопрос:

Как проверить каждые roomId со значением 5а затем предотвратить перекрытие дат в той же комнате?

Я пробовал следующее, но иногда это не работает ...

foreach(var item in room)
{
  if((StartDateWantToBook <= item.EndDate) && (item.StartDate <= EndDateWantToBook))
  {
       overlaps = true;
       MessageBox.Show("This room is already reserved");
  }
  else
  {
      // Process to reserv this room
      overlaps = false;
  }

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Во-первых, пожалуйста, измените ваш код для большей читабельности

bool overlaps = false;
foreach(var item in room)
{
  if((StartDateWantToBook <= item.EndDate) && ( EndDateWantToBook >= item.StartDate))
     {
        overlaps = true;
        MessageBox.Show("This room is already reserved");
        // or you could use break; here to exist 
     }
}
// you could continue here by checking if(overlaps)

Используя это, вы можете удалить блок else, чтобы уменьшить количество строк кода.

0 голосов
/ 27 ноября 2018

Блок else устанавливает overlaps в false.Даже если существует перекрывающееся резервирование, оно устанавливается на false, если последнее, которое он обрабатывает, не перекрывается.Избавьтесь от блока else.

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