我如何 select 列表中的所有对象在另一个 list/model 中没有相关对象
How do I select all objects from a list that have no related objects in another list/model
使用 linq,我如何select 房间对象列表中的所有房间对象 预订模型中不存在预订对象(可以通过外国检查键)?
这是对象列表:
var rooms = (from m in db.Rooms
where
m.FK_HotelID == id
select m).ToList();
这是名为 Room 的第一个模型:
public partial class Room
{
public Room()
{
Bookings = new HashSet<Booking>();
}
public int RoomID { get; set; }
public int RoomNumber { get; set; }
public string RoomType { get; set; }
// Foreign Key
public int? FK_HotelID { get; set; }
public virtual ICollection<Booking> Bookings { get; set; }
// Navigation Property
public virtual Hotel Hotel { get; set; }
}
第二个模型叫做 Booking:
public partial class Booking
{
public int BookingID { get; set; }
public string BookingName { get; set; }
public string BookingContact { get; set; }
public DateTime BookingTime { get; set; }
public string BookingStatus { get; set; }
// Foreign Key
public int? FK_RoomID { get; set; }
// Navigation Property
public virtual Room Room { get; set; }
}
我是 linq 的初学者,到目前为止我能理解的是如何从单个模型 select,尽管我可以使用带左连接的 SQL 查询轻松获得结果.
P.S:我首先创建了数据库,然后使用 ADO.NET 实体数据模型向导 和 代码优先生成了模型数据库。只要我理解原因,我也不介意对数据库或模型进行任何小的更改。
这应该有效:
var unbookedRooms = db.Rooms.Where(r => r.FK_HotelID == id && !r.Bookings.Any()).ToList();
想法是在子集合上使用 LINQ 的 Any()
方法来排除 Room
具有非空 Booking
集合的对象。
这样试试;
var rooms = (from m in db.Rooms
where
m.FK_HotelID == id &&
!m.Bookings.Any()
select m).ToList();
使用 linq,我如何select 房间对象列表中的所有房间对象 预订模型中不存在预订对象(可以通过外国检查键)?
这是对象列表:
var rooms = (from m in db.Rooms
where
m.FK_HotelID == id
select m).ToList();
这是名为 Room 的第一个模型:
public partial class Room
{
public Room()
{
Bookings = new HashSet<Booking>();
}
public int RoomID { get; set; }
public int RoomNumber { get; set; }
public string RoomType { get; set; }
// Foreign Key
public int? FK_HotelID { get; set; }
public virtual ICollection<Booking> Bookings { get; set; }
// Navigation Property
public virtual Hotel Hotel { get; set; }
}
第二个模型叫做 Booking:
public partial class Booking
{
public int BookingID { get; set; }
public string BookingName { get; set; }
public string BookingContact { get; set; }
public DateTime BookingTime { get; set; }
public string BookingStatus { get; set; }
// Foreign Key
public int? FK_RoomID { get; set; }
// Navigation Property
public virtual Room Room { get; set; }
}
我是 linq 的初学者,到目前为止我能理解的是如何从单个模型 select,尽管我可以使用带左连接的 SQL 查询轻松获得结果.
P.S:我首先创建了数据库,然后使用 ADO.NET 实体数据模型向导 和 代码优先生成了模型数据库。只要我理解原因,我也不介意对数据库或模型进行任何小的更改。
这应该有效:
var unbookedRooms = db.Rooms.Where(r => r.FK_HotelID == id && !r.Bookings.Any()).ToList();
想法是在子集合上使用 LINQ 的 Any()
方法来排除 Room
具有非空 Booking
集合的对象。
这样试试;
var rooms = (from m in db.Rooms
where
m.FK_HotelID == id &&
!m.Bookings.Any()
select m).ToList();