如何连接表A中的两列和表B中的两列-Linq join MVC

时间:2018-11-13 09:41:41

标签: c# sql-server linq

在linq SQL中,如何连接dbo.Sales Invoice Line中的两列和dbo.Value Entry中的两列!任何人都可以帮助我:)预先感谢:)

这是SQL版本:

 SELECT  *
 FROM dbo.[Item Ledger Entry] 
 INNER JOIN 
 dbo.[Value Entry] ON dbo.[Item Ledger Entry].[Entry No_] = dbo.[Value Entry].[Item Ledger Entry No_] 

  //Start here
  INNER JOIN
  dbo.[Sales Invoice Line] ON dbo.[Value Entry].[Document No_] = dbo.[Sales Invoice Line].[Document No_] 
  AND 
  dbo.[Value Entry].[Document Line No_] = dbo.[Sales Invoice Line].[Line No_]

这是我最终使用的linq版本,但是我不确定我是否以正确的方式做到了!:

from cbr in db.Contact_Business_Relation
                join c in db.Contact on cbr.Contact_No_ equals c.Company_No_
                join sa in db.Sales_Invoice_Header on cbr.No_ equals sa.Sell_to_Customer_No_
                join sih in db.Sales_Invoice_Line on sa.No_ equals sih.Document_No_

                //Start here
                join ve in db.Value_Entry on sih.Document_No_ equals ve.Document_No_ 
                join vetwo in db.Value_Entry on sih.Line_No_ equals vetwo.Document_Line_No_
                join item in db.Item_Ledger_Entry on ve.Item_Ledger_Entry_No_ equals item.Entry_No_

1 个答案:

答案 0 :(得分:0)

您可以通过在连接条件的每一侧匹配一个对象来执行此多条件连接。可以是类型化的对象,但只要属性名称匹配,则匿名对象也可以。查询的相关部分应如下所示:

//Start here
join ve in db.Value_Entry on new {
   DocNo = sih.Document_No_,
   LineNo = sih.Line_No_ } equals new {
   DocNo = ve.Document_No_,
   LineNo = ve.Document_Line_No_ }