LINQ查询取决于孙子集合

时间:2012-08-05 18:58:43

标签: c# asp.net-mvc-3 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对多对多的关系。

我有一个宠物集合,我想根据所有者对象的名称属性进行限制。

1 个答案:

答案 0 :(得分:4)

这个怎么样?

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

这将返回在其所有者列表中拥有所有者姓名YourLookingFor的宠物的无数个。