Если вы хотите найти House
экземпляры, содержащие синий Windows
, используйте существующее расширение Any
:
var blueWindowHouses =
from h in houses
where h.Windows.Any(w => w.Color == blueOne.Color)
select h;
То, что вы сейчас имеете, это не правильно. Расширение Select
не фильтрует - это проекция, и вы никому не присваиваете результат, так что ваша строка фактически не используется.
Кроме того, оборачивая эту логику в метод, вы можете помешать компилятору выражений преобразовать ее в оператор SQL. Вместо этого, запишите все в одном кадре, как я выше, или примите и верните IQueryable<House>
вместо того, чтобы принять IEnumerable<House>
и вернуть List<House>
.