我在表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());

09-28 04:19