簡體   English   中英

LINQ to SQL左聯接通過左聯接c#

[英]LINQ to SQL Left Join over Left Join c#

我試圖對現有的左聯接執行左聯接,因為這是一個查找表。

就像是:

(from m in maintablerepository.AsQueryable()
join st1 in subtable1repository.AsQuerable on 
m.id = s1.id into grps1
from s in grps1.DefaultIfEmpty()
join lt1 in lookuptablerepository.AsQuerable on 
s.lkpid = lt1.id into grplt1
from lkp in grplt1.DefaultIfEmpty()

select new {

prop1 = m.prop1,
prop2 = s.prop2,
prop3 = lkp.prop3

}).ToList();

問題是,盡管子表中沒有匹配的值,但當我刪除查找表上的左聯接時,此查詢運行良好。

但是,將其放回原位會導致“未設置對象引用”錯誤。

我什至嘗試了以下方法,但沒有成功:

(from m in maintablerepository.AsQueryable()
join st1 in subtable1repository.AsQuerable on 
m.id = s1.id into grps1
from s in grps1.DefaultIfEmpty()
join lt1 in lookuptablerepository.AsQuerable on 
s.lkpid = lt1.id into grplt1
from lkp in grplt1.DefaultIfEmpty()
where s!=null && lkp!=null
select new {

prop1 = m.prop1,
prop2 = (s==null)?string.Empty:s.prop2,
prop3 = (lkp==null)?string.Empty:lkp.prop3

}).ToList();

如果第一個左連接結果為null,那么另一個將如何對其進行連接?

問題在於s.lkpid = lt1.id,其中s為null。 嘗試將s!= null放置如下

 (from m in maintablerepository.AsQueryable() join st1 in subtable1repository.AsQuerable on m.id = s1.id into grps1 from s in grps1.DefaultIfEmpty() where s!=null join lt1 in lookuptablerepository.AsQuerable on s.lkpid = lt1.id into grplt1 from lkp in grplt1.DefaultIfEmpty() where lkp!=null select new { prop1 = m.prop1, prop2 = (s==null)?string.Empty:s.prop2, prop3 = (lkp==null)?string.Empty:lkp.prop3 }).ToList(); 

如果有幫助,請標記為已回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM