【问题标题】:How to left join tables in LINQ TO SQL to get associated records如何在 LINQ TO SQL 中左连接表以获取关联记录
【发布时间】:2021-02-25 04:12:35
【问题描述】:

我有一个 linq to sql 语句,我正在与一堆表进行连接,但我需要离开连接一个表,因为我们不确定是否有任何关联的记录。

由于我们不确定每次购买是否都会关联一个文件,因此我们将继续加入。

购买加入 - 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 适用于常规连接,我怎样才能离开连接文件存储和存储实体表

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();

【问题讨论】:

标签: sql .net linq asp.net-core linq-to-sql


【解决方案1】:

您可以通过使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2010-10-14
    • 2015-06-20
    相关资源
    最近更新 更多