如何使用linq连接3个表

Man*_*anu 4 c# linq asp.net-mvc entity-framework

我试图在Linq的查询中加入3个表来从所有3个表中获取数据.下面是表格方案的图片:

在此输入图像描述

查询应选择:SewagePlantName,CompanyName和Duty

此外,我需要将SewagePlantId限制为ID列表,其列表如下:

            var sewagePlantIds = UnitOfWork.GetAll<UserGroup>()
            .Where(group => group.Id == webAppPrincipal.GroupId)
            .SelectMany(group => group.SewagePlantId).Select(sewageplant => sewageplant.Id).ToList();
Run Code Online (Sandbox Code Playgroud)

我加入3个表的顺序以及在何处/如何将SewagePlantId限制在给定列表中有困难.

Bit*_*ase 12

你能尝试类似的东西加入吗?

 from d in Duty
join c in Company on d.CompanyId equals c.id
join s in SewagePlant on c.SewagePlantId equals s.id
  .Select(m => new
  {
      duty = s.Duty.Duty, 
      CatId = s.Company.CompanyName,
      SewagePlantName=s.SewagePlant.SewagePlantName
      // other assignments
  });
Run Code Online (Sandbox Code Playgroud)

  • 在第二次加入时,我得到一个错误:-&gt; 加入子句中的一个表达式的类型不正确。类型推断在调用“加入”时失败。 (3认同)

小智 5

var obj = from trns in context.tblPartyRegistrations
          join st in context.tblSellingTrans
          on trns.PartyRegId equals st.Fk_PartyRegId
          join pt in context.tblPartyRemainings
          on trns.PartyRegId equals pt.fk_PartyId
          select new
          {
              trns.Name,
              trns.PhoneNo,
              trns.Address,
              st.RecivedAmount,
              st.Date,
              st.CustomerType,
              st.MilkRate,
              st.Mltr,
              st.Mkg,
              st.NtAmnt,
              st.RemaningAmount,
              pt.Remainingammount
          };
Run Code Online (Sandbox Code Playgroud)