我在表Morden,Mproductos和Mdistributor之间具有以下关系。我可以选择所有Morden,其中Mdistributors.Name ='DVerdersoto',如下面的代码所示。我如何使用linq来显示Mordern和与其相关的Mproductos。我知道您需要加入表MOrden和Mproductos,其中Mdistributor.Name =“ DVerdesoto”,但是您该怎么做。它可以是lambda表示法或其他无关紧要的表示法。
我也看了这个链接,但是我的情况有所不同:
Join multiple tables
任何帮助,将不胜感激。提前致谢
到目前为止的代码
private void button2_Click(object sender, EventArgs e)
{
using (var context = new EDMmanytomanyContainer())
{
var result = context.MOrdens.Where(s => s.Mdistributors.Any(c=> c.Nombre=="DVerdesoto"));
}
}
最佳答案
由于您在Mproductos
对象上已经具有导航属性MOrden
,因此我认为您只缺少一件:
private void button2_Click(object sender, EventArgs e)
{
using (var context = new EDMmanytomanyContainer())
{
var result = context.MOrdens
.Where(s => s.Mdistributors.Any(c=> c.Nombre=="DVerdesoto"))
.SelectMany(mo => mo.Mproductos);
}
}
假设您通过ID值识别重复项,则可以将LINQ更改为以下内容:
var result = context.MOrdens
.Where(s => s.Mdistributors.Any(c=> c.Nombre=="DVerdesoto"))
.SelectMany(mo => mo.Mproductos)
.GroupBy(mp => mp.Id)
.Select(group => group.First());