是否可以在linq中过滤子集合?

时间:2018-07-02 20:51:25

标签: c# linq entity

我有一个实体房,里面有一个房间清单。 我正在使用实体框架和linq。我想获取所有仅列出大于2米的房间的房屋。我不想带所有房间然后进行过滤,也不想创建一个新对象来接收房屋和经过过滤的房间列表,如下所示:

repo.Include(h => h.Rooms).Select(h => new {
                                    house => h,
                                    rooms => rooms.Where(...)
                                    }

有可能吗?

1 个答案:

答案 0 :(得分:0)

var houses = repo.Where(x => x.RoomsList.Any(y => y.Length > 2));

从“房间列表”中具有至少一个“房间”且长度大于2的“房屋”中返回所有元素。

如果您只希望每间房子的长度大于2米的房间,则可以使用以下方法:

var roomsList = houses.Select(x => new 
{ 
    x.House, 
    Rooms = x.RoomsList.Where(y => y.Length > 2) 
});