Ответ 1
Вам нужно вызвать функцию SelectMany
, которая берет один элемент и позволяет получить из него несколько элементов.
Например:
var cities = NHibernateSession.Linq<Product>()
.SelectMany(p => p.Days)
.Select(p => p.City)
.Where(c => c != null)
.Distinct();
Обратите внимание, что если класс City
не реализует Equals
и GetHashCode
правильно, это будет возвращать дубликаты.
Вы можете сделать это, используя синтаксис понимания запроса следующим образом: (Untested)
var cities = (from product in NHibernateSession.Linq<Product>()
from day in product.Days
where day.City != null
select day).Distinct();