Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net EF相关数据下拉列表_Asp.net_Asp.net Mvc_Entity Framework_Linq_Linq To Entities - Fatal编程技术网

Asp.net EF相关数据下拉列表

Asp.net EF相关数据下拉列表,asp.net,asp.net-mvc,entity-framework,linq,linq-to-entities,Asp.net,Asp.net Mvc,Entity Framework,Linq,Linq To Entities,我有一个下拉列表,通过ViewBag传递给视图: ViewBag.RoomTypeID = new SelectList(db.RoomType, "ID", "Type"); 这显然很好,但我想做一些更复杂的事情,我正在努力找到从哪里开始 最后,我希望下拉列表仅在单独的表中显示尚未分配(计数=0)的房间类型。我的模型是: public class RoomType { [Key] public int ID { get; set; } [Display(Name =

我有一个下拉列表,通过ViewBag传递给视图:

ViewBag.RoomTypeID = new SelectList(db.RoomType, "ID", "Type");
这显然很好,但我想做一些更复杂的事情,我正在努力找到从哪里开始

最后,我希望下拉列表仅在单独的表中显示尚未分配(计数=0)的房间类型。我的模型是:

public class RoomType
{
    [Key]
    public int ID { get; set; }

    [Display(Name = "Room Type")]
    public string Type { get; set; }

    public virtual ICollection<Room> Rooms { get; set; }
}
假设我的属性ID为100,我只想在下拉列表中显示房间类型,其中没有属性ID为100的房间具有相同的房间类型

我试图做的是:

ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.ID = (db.Rooms.Where(r => r.PropertyID == 1))) , "ID", "Type");

但是我想我需要转换成一个int的列表?

我不知道我是否理解得很好,但我想你只需要重构你的linq查询,如下所示:

var propertyIdNotWanted = 100;
ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.Rooms.All(room => room.PropertyID != propertyIdNotWanted )) , "ID", "Type");
db.Room.Where(r => r.PropertyID != propertyIdNotWanted).Select(r => r.RoomType)
或者你可以像这样浏览
Rooom

var propertyIdNotWanted = 100;
ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.Rooms.All(room => room.PropertyID != propertyIdNotWanted )) , "ID", "Type");
db.Room.Where(r => r.PropertyID != propertyIdNotWanted).Select(r => r.RoomType)

我不知道我是否理解得很好,但我认为您只需要重构linq查询,如下所示:

var propertyIdNotWanted = 100;
ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.Rooms.All(room => room.PropertyID != propertyIdNotWanted )) , "ID", "Type");
db.Room.Where(r => r.PropertyID != propertyIdNotWanted).Select(r => r.RoomType)
或者你可以像这样浏览
Rooom

var propertyIdNotWanted = 100;
ViewBag.RoomTypeID = new SelectList(db.RoomType.Where(r => r.Rooms.All(room => room.PropertyID != propertyIdNotWanted )) , "ID", "Type");
db.Room.Where(r => r.PropertyID != propertyIdNotWanted).Select(r => r.RoomType)

但是roomType实体不包含PropertyID?经过一些额外的阅读,它看起来像。任何可能给我我需要的我的坏@Gavin5511我已经用2个选项更新了我的答案选项1似乎没有编译。错误是“方法'Where'没有重载3个参数?这只是括号,我已经修复。但是roomType实体不包含PropertyID?经过一些额外的阅读,它看起来像。任何可能会给我我需要的东西我的坏@Gavin5511我已经用2个选项更新了我的答案选项1似乎没有编译。错误是”方法“Where”没有重载3个参数?我已经修复了,它只是一个括号。