[英]How do I find available rooms using LINQ, when there are more than one of each room type?
我有能力讓客戶在輸入他們選擇的日期並指定他們的房間選擇后進行預訂。 正是在這一點 - 檢查可用性 - 我使用了以下LINQ表達式:
var availRooms = db.Rooms.Where(room => room.RoomTypeID == roomChoiceID)
.Where(m => m.Bookings.All(r => r.Departure <= model.Arrival ||
r.Arrival >= model.Departure));
( roomChoiceID
是通過用用戶輸入的房間選擇查詢數據庫獲得的)
這工作正常,直到我決定在同一日期預訂同一房型的兩個房間。 (例如,預訂10月/ 18日的家庭活動室 - 12/06/18工作正常,但在這些日期嘗試預訂第二個家庭活動室會出錯)。 我完全不確定如何使用LINQ給我一個房間類型相同的房間(在我的例子中是家庭),而不是在我輸入的日期預訂。
var availRooms = db.Rooms.Where(room => room.RoomTypeID == roomChoiceID && (!room.Booking.Any(b => (b.Departure >= model.Departure && b.Arrival <= model.Arrival)));
或者,使用linq表達式:
var availRooms = from room in rooms
where room.RoomTypeID == roomChoiceID
&& (!room.Bookings.Any(b => b.Departure >= model.Departure && b.Arrival <= model.Arrival))
select room;
說明:在上面的查詢中,它將返回所有未在到達和離開范圍內預訂的房間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.