1

データベースにマップされ、正しく入力されたオブジェクトのセットがありますが、孫オブジェクトの値に基づいてオブジェクトのコレクションを返す必要がある場合があります。これらのオブジェクト間の関係により、この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プロパティに応じて制限したいと思います。

4

1 に答える 1

5

これはどうですか?

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

これにより、所有者リストにOwnerNameYourLookingForを持つペットの列挙可能オブジェクトが返されます。

于 2012-08-05T19:20:24.007 に答える