Linq-左联接的正确格式

本文关键字:格式 Linq- | 更新日期: 2023-09-27 18:24:21

我是linq的新手。。。我想知道我做得对不对。。

这是我的密码。。。

var result = from a in ctx.ItemReceipts
             join b in ctx.ItemReceiptStatusTypes on a.Status equals b.ItemReceiptStatusTypeID
             join c in ctx.PurchaseOrders on a.ReferenceID equals c.PurchaseOrderID
             into leftJoinItemReceipts 
             from d in leftJoinItemReceipts.DefaultIfEmpty()
             where a.ItemReceiptID.Equals(ItemReceiptID)
             select new
             {
                 CItemReceiptID = a.ItemReceiptID,
                 CTransactionNumber = a.TransactionNumber,
                 CRemarks = a.Remarks,
                 CStatus = a.Status,
                 CStatusType = b.Description,
                 CReferenceID = a.ReferenceID,
                 CReferenceTypeID = a.ReferenceTypeID,
                 CTransactionDate = a.TransactionDate,
                 CDateReceived = a.DateReceived,
                 CTotalCost = a.TotalCost,
                 CPONumber = d.PONumber                     
             };

它运行得很完美。。。但是我真的不懂into的部分。。我不知道这是否真的是左联接,但给了我想要的数据。。。它给了我CCD_ 2中的所有数据,尽管它们与CCD_。。。。

我需要解释。。。比较mysql和linq。。。

Linq-左联接的正确格式

from a in ctx.ItemReceipts
join b in ctx.ItemReceiptStatusTypes on a.Status equals b.ItemReceiptStatusTypeID
into leftJoinItemReceipts 
from d in leftJoinItemReceipts.DefaultIfEmpty()
join c in ctx.PurchaseOrders on d.ReferenceID equals c.PurchaseOrderID

这将对ItemReceiptStatusTypes和ItemReceipt进行左联接,然后对PurchaseOrders 进行内部联接