2012-08-05 85 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 2012-08-05 19:05:25

+3

你可以發佈你嘗試過但沒有用的查詢嗎? – Ankush 2012-08-05 19:06:39

+0

@Vlad數據庫是現有的(對象/表名更改)並正確映射。 – XN16 2012-08-05 19:11:46

回答

4

這是怎麼回事?

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

這將返回在其所有者列表中擁有OwnerNameYourLookingFor的寵物的enumerable。

+1

完美!非常感謝!我一直對「任何」功能以及如何使用它有問題,至少我有一個很好的例子來回顧未來。再次感謝。 – XN16 2012-08-05 19:36:47