如何在 LINQ TO SQL 中左连接表以获取关联记录

How to left join tables in LINQ TO SQL to get associated records

我有一个 linq to sql 语句,我在其中加入了一堆 tables ,但我需要左加入 table 因为我们不确定是否有任何关联的记录。

我们正在加入,因为我们不确定每次购买是否都会关联一个文件。

购买加入 - Invc 购买加入 - FileStore FileStore##Entity

select * from Purchase p
join Invc i on i.Invc_ID = p.Invc_ID
left join  FileStore##Entity fe on p.Purchase_ID = fe.Entity_ID
left join FileStore fs on fs.FileStore_ID = fe.FileStore_ID
where p.Purchase_ID = 53

我当前的 linq to sql 适用于常规连接,我怎样才能离开连接文件存储和存储实体 table

PurchaseEntity purchase = (from p in TransactionalDbContext.Purchase
                join i in TransactionalDbContext.Invc
                    on p.InvcId equals i.InvcId
                where d.Purchase_Id == id
                select new DisputeEntity
                {
                    Purchase_Id = p.Purchase_Id,
                    InvcId = i.InvcId,
                    SubmittedDate = d.SubmitDt,
                    InvcNum = i.InvcNum
                    // get the file elements by left join file 
                }).FirstOrDefault();

您可以使用 DefaultIfEmpy 方法轻松执行左连接或右连接。

按照你的例子:

from p in dbContext.Purchases
        join i in dbContext.Invc on p.InvcId equals i.InvcId
        join fe in dbContext.FileStoreEntities.DefaultIfEmpty() on p.Purchase_ID equals fe.Entity_ID
        join fs in dbContext.FileStores.DefaultIfEmpty() on fe.FileStore_ID equals fs.FileStore_ID