LINQ для выражения NHibernate в списке <> - PullRequest
2 голосов
/ 14 февраля 2011

Я использую LINQ для NHibernate, и у меня есть модель, которая выглядит примерно так (упрощенно):

public class Person {
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual ICollection<Address> Addresses { get; set; }
}

public class Address {
    public virtual string Street { get; set; }
    public virtual string City { get; set; }
}

Я могу выполнить следующий запрос LINQ to NHib:

Expression<Func<Person, bool>> predicate = pr => pr.FirstName == "Bob";
List<Person> people = session.Query().Where(predicate).ToList();

Но я застрял, пытаясь вернуть всех людей, у которых есть адрес с City == "Что-то".

1 Ответ

4 голосов
/ 14 февраля 2011

Как насчет:

List<Person> people = session.Query()
                        .Where(p => p.Addresses.Any(a => a.City == "Something"))
                        .ToList();

Предполагается, что вы хотите, чтобы запрос все еще выполнялся в базе данных.Если вы просто хотите сделать это в пределах List<Person> уже возвращенного:

people = people.Where(p => p.Addresses.Any(a => a.City == "Something"))
               .ToList();
...