猿问

当每种房间类型不止一个时,如何使用 LINQ 查找可用房间?

我有能力让客户在输入他们选择的日期并指定他们的房间选择后进行预订。正是在这一点上 - 检查可用性 - 我使用了以下 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/06/18 - 12/06/18 的家庭房工作正常,但随后尝试在这些日期预订第二间家庭房会出错)。我完全不确定如何使用 LINQ 为我提供具有相同房间类型(在我的示例中为家庭)的房间,并且没有在我输入的日期预订。


撒科打诨
浏览 84回答 1
1回答

繁华开满天机

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 roomswhere room.RoomTypeID == roomChoiceID&& (!room.Bookings.Any(b => b.Departure >= model.Departure && b.Arrival <= model.Arrival))select room;解释:在上面的查询中,它会返回所有在Arrival 和Departure 范围内没有预订的房间。
随时随地看视频慕课网APP
我要回答