从一个表中检索Linq中不在其他表中的所有项目

时间:2018-03-16 09:19:51

标签: c# sql-server linq

我有一个船级和一个租船班。

船类:

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,它们都返回所有的船只,它应该在数据库中表示为真。

1 个答案:

答案 0 :(得分:2)

您应该将LINQ更改为以下内容:

db.Boats.Where(boat => !db.RentBoats.Any(x => x.BoatID == boat.BoatID &&  
x.IsOnRent == true)).ToList();

如果所有船只都租用,您当前的查询是试图获取船只。