我需要一个linq调用,以数组格式返回地板ID的列表,以便能够使用它进行Contains调用,以返回所有相关数据。
我无法让linq返回一系列楼层。
var myFloors =
(from f in db.Floor
where f.BuildingId == txBuildingId
select new { f.FloorId }).ToArray();
然后,我在基于该数组进行选择时遇到了麻烦。
var model =
(from r in db.Room
where myFloors.Contains(r.FloorId)
select new
{
label = r.Name,
value = r.RoomId
});
我可以在SQL中使用字符串并使用IN子句轻松地做到这一点。我对LINQ相当陌生,对此有很多麻烦。任何帮助将非常感激。
最佳答案
无需在此处输入匿名类型,您可以直接选择floorId:
var myFloors =
(from f in db.Floor
where f.BuildingId == txBuildingId
select f.FloorId);
为了更易读,我更喜欢使用lambda样式:
var myFloors = db.Floor.Where(f => f.BuildingId == txBuildingId)
.Select(f => f.FloorId);
所以:
var model = db.Room.Where(r => myFloors.Contains(r.FloorId))
.Select(r => new {
label = r.Name,
value = r.RoomId
});