我有能力让客户在输入他们选择的日期并指定他们的房间选择后进行预订。正是在这一点上 - 检查可用性 - 我使用了以下 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 为我提供具有相同房间类型(在我的示例中为家庭)的房间,并且没有在我输入的日期预订。
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
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;
解释:在上面的查询中,它会返回所有在Arrival 和Departure 范围内没有预订的房间。
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消