我无法弄清楚如何根据多对多关系中的列表进行选择。
我使用实体框架创建了以下实体和多对多关系(如果我要解决这个问题,请纠正我):
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 的 Bar (包括 only 和 with 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);
}
但是,这适用于抓取任何 Bar:
我很肯定有一种更好的方法可以做到这一点,有没有一种方法可以根据列表进行选择,而不是进行大约 2 个 foreach 循环?
我不确定如何获取 Foo 的列表,其中 Foo 具有所有酒吧,而不仅仅是任何酒吧。