多対多の関係でリストに基づいて選択する方法がわかりません。
エンティティ フレームワークを使用して、次のエンティティと多対多の関係を作成しました (これが間違っている場合は修正してください)。
public class Foo {
public int FooID { get; set; }
public string FooName { get; set; }
public virtual ICollection<FooBar> Foo_Bar { get; set; }
}
public class Bar {
public int BarID { get; set; }
public string BarName { get; set; }
public virtual ICollection<FooBar> Foo_Bar { get; set; }
}
public class FooBar {
public int FooBarID{ get; set; }
public virtual int BarID { get; set; }
public virtual int FooID { get; set; }
}
私のコードでは、コントローラーは Foo のリストを受け取り、それらの foo を含むすべてのバーを見つける必要があります ( only と any の両方で)
私は本当にどこから始めるべきか途方に暮れています...これが私が思いついたすべてです:
public PartialViewResult SearchAnyBar(List<Foo> foos) {
List<FooBar> foobars = _db.FooBar.Select(fb => fb).ToList<FooBar>();
List<Bar> searchedBars = new List<Bar>();
foreach (Foo f in foos)
{
foreach (FooBar fXb in foobars)
{
if (fXb.FooID == f.FooID)
{
searchedBars.Add(_db.Bar.Where(b => b.BarID == fXb.BarID).FirstOrDefault());
}
}
}
return PartialView("The View", searchBars);
}
ただし、これは任意のバーを取得する場合に機能します。
これを行うにはもっと良い方法があると確信しています.2つの foreach ループの代わりに、リストに基づいて選択する方法はありますか?
Foo に ANY だけでなく、すべての Bar がある Foo のリストを取得する方法がわかりません。