LINQ

2011-02-14 2 views
2

내가 NHibernate에에 LINQ를 사용하여,이 같은 (간체) 보이는 모델이있어 :LINQ

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; } 
} 

내가 NHib 쿼리에 다음 LINQ를 수행 할 수 있습니다

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

하지만 저는 City == "Something"주소가있는 모든 사람들을 돌려 보내려고 노력하고 있습니다.

답변

4

에 대해 어떻게 : 당신을 가정 것

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(); 
+2

감사합니다. Jon은 그 덕을 보았습니다. LINQ foo에서 작업해야합니다. 내 질문은 "존 스켓 (Jon Skeet)"뱃지에 의해 답변되었습니다. –