为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
撒科打诨 2021-06-15 17:54:10
我有能力让客户在输入他们选择的日期并指定他们的房间选择后进行预订。正是在这一点上 - 检查可用性 - 我使用了以下 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 范围内没有预订的房间。


查看完整回答
反对 回复 2021-06-27
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信