ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-当每种房间类型中有多个房间时,如何使用LINQ查找可用房间?

2019-11-09 02:09:04  阅读:9  来源: 互联网

标签:linq c



我有能力让客户在输入他们选择的日期并指定他们的房间选择后进行预订.在这一点上-检查可用性-我使用以下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)

直到我决定在相同的日期预订两个相同类型的房间,此方法才能正常工作. (例如,在18/10/6-18/12/06预订家庭房可以正常工作,但是尝试在这些日期预订第二个家庭房会出错).我完全不确定如何使用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;

说明:
在上面的查询中,它将返回所有在到达和离开范围内尚未预订的房间.



标签:linq,c

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有