我有一个船级和一个租船班。
船类:
public class Boat
{
[Key]
public int BoatID { get; set; }
public string BoatName { get; set; }
}
RentBoat类:
public class RentBoat
{
[Key]
[Required]
public int RentBoatID { get; set; }
[ForeignKey("Boat")]
public int BoatID { get; set; }
public bool IsOnRent { get; set; }
public virtual Boat Boat { get; set; }
}
我想从不在RentBoats表中的数据库中获取所有Boats。
到目前为止我的工作代码不正确:
using (var db = new BoatContext())
{
return db.Boats.Where(boat => !db.RentBoats.Any(x => x.IsOnRent == false)).ToList();
//(from boats in db.Boats
// where !db.RentBoats.Any(x => x.IsOnRent == false)
// select boats).ToList();
}
Haven没有让任何查询正常工作。即使我在RentBoat表中有一个项目且IsOnRent列设置为1,它们都返回所有的船只,它应该在数据库中表示为真。
答案 0 :(得分:2)
您应该将LINQ更改为以下内容:
db.Boats.Where(boat => !db.RentBoats.Any(x => x.BoatID == boat.BoatID &&
x.IsOnRent == true)).ToList();
如果所有船只都租用,您当前的查询是试图获取船只。