Можно ли отфильтровать дочернюю коллекцию в linq? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть сущность Дом, у которой есть Список комнат. Я использую Entity Framework и Linq. Я хочу получить все дома только с перечнем комнат, которые больше 2 метров. Я не хотел бы приводить все комнаты и затем фильтровать, и ни создавать новый объект, который получает дом и отфильтрованный список комнат как это:

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

Возможно ли это?

1 Ответ

0 голосов
/ 03 июля 2018
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) 
});
...