4
我有下面的SQL查詢,我想轉換成LINQ獲得完全相同的結果和下面的查詢返回轉換左外連接兩個查詢LINQ
select *
from (
select distinct DocID
from UserViewDoc
where UserViewDoc.UVID in (102558)) a
left outer join
(
select distinct UserViewDoc.DocID
from UserViewDoc
inner join UserViewHeader on UserViewDoc.UVID = UserViewHeader.UVID
where UserViewDoc.UVID not in (102558)
and UserViewHeader.IsLock = 1) b on a.DocID = b.DocID
where b.DocID is null
)
我已經試過到目前爲止低於LINQ聲明
var v = (from uvd in this.ViewSelectorControl.LDReviewContext.GetTable<UserViewDoc>()
where IDs.Contains(uvd.UVID)
select new { uvd.DocID, uvd.UVID });
var c = ((from uvd in this.ViewSelectorControl.LDReviewContext.GetTable<UserViewDoc>()
join uvh in this.ViewSelectorControl.LDReviewContext.GetTable<UserViewHeader>() on uvd.UVID equals uvh.UVID
where !IDs.Contains(uvh.UVID) && uvh.IsLock == true
select new { uvd.DocID, uvd.UVID }));
var d = (from id in v
join ids in c on id.UVID equals ids.UVID into vc
from sub in vc.DefaultIfEmpty()
where sub == null
select id);
我對着正在運行的SQL查詢的問題正在恢復30583條記錄和LINQ版本的它返回所有的30613條記錄
這是偉大的,你告訴你自己的努力,但也還知道爲什麼它顯然不會做你試圖實現什麼?另外,通常可以使用導航屬性來解決連接問題,而不是LINQ連接。 –
@GertArnold謝謝!!,對不起,我錯過了一個實際上當我運行SQL查詢它返回30583記錄,但在LINQ中運行同樣的事情返回所有的30613記錄。另外,我可以使用Navigational屬性,因爲它最終會將一百萬條記錄加載到memeory –
您的SQL和LINQ語句不會執行相同的操作。這可能解釋了返回行中的差異。你的_actual_ SQL是什麼? – Corey