如何在 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
我有一个 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