2012-08-05 5 views
1

내 데이터베이스에 매핑되고 올바르게 채워지는 개체 집합이 있지만 손자 개체 값에 따라 개체 컬렉션을 반환해야하는 경우가 있습니다. 이러한 개체 사이의 관계를 내게 문제가이 linq 쿼리를 성공적으로 만들 수 있습니다. 다음과 같이LINQ 쿼리에 따라 손주름 컬렉션

객체는 다음과 같습니다

public class Pet 
{ 
    public int PetID { get; set; } 
    public string Name { get; set; } 

    public virtual int ToyID { get; set; } 
    public virtual Toy Toy { get; set; } 
} 

public class Toy 
{ 
    public int ToyID { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Owner> Owners { get; set; } 
    public virtual ICollection<Pet> Pets { get; set; } 
} 

public class Owner 
{ 
    public int OwnerID {get; set;} 
    public string Name {get; set;} 

    public virtual ICollection<Toy> Toys { get; set; } 
} 

그래서 기본적으로는 1 많은 관계로 많은합니다.

애완 동물 컬렉션이 있는데 Owner 객체의 Name 속성에 따라 제한하고 싶습니다.

+2

쿼리가 자연 스럽 게 매핑되지 않으면 데이터베이스 구조가 잘못되었을 수 있습니다. – Vlad

+3

시도해도 작동하지 않은 쿼리를 게시 할 수 있습니까? – Ankush

+0

@Vlad 데이터베이스가 기존 데이터베이스 (개체/테이블 이름이 변경됨)이며 올바르게 매핑됩니다. – XN16

답변

4

어떨까요?

Pets.Where(p => p.Toy.Owners.Any(o => o.Name == "OwnerNameYourLookingFor")); 

소유자 목록에 OwnerNameYourLookingFor가있는 애완 동물의 수를 반환합니다.

+1

완벽한! 매우 감사합니다! 필자는 항상 'Any'기능에 문제가 있으며 사용 방법은 적어도 나중에 다시 참조 할 좋은 예제가 있습니다. 다시 한번 감사드립니다. – XN16