2012-08-05 81 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