我試圖將SQL query
轉換爲Linq
包含幾個左外部聯接,但我遇到了一個奇怪的情況。SQL到Linq查詢與多個左外部聯接
我的SQL的相關部分是:
SELECT * FROM dbo.SessionDetails as sd
left outer join dbo.VoipDetails as vd on vd.SessionIdTime = sd.SessionIdTime and vd.SessionIdSeq = sd.SessionIdSeq
left outer join dbo.Gateways as fgw on vd.FromGatewayId = fgw.GatewayId
我Linq查詢到目前爲止是:
var query = from sd in dbo.SessionDetails
join vd in dbo.VoipDetails on new { sd.SessionIdTime, sd.SessionIdSeq } equals new { vd.SessionIdTime, vd.SessionIdSeq } into sdvd
from v in sdvd.DefaultIfEmpty()
join fgw in dbo.Gateways on vd.FromGatewayId equals fgw.GatewayId into sdgw
from g in sdvd.DefaultIfEmpty()
select sd;
我得到一個錯誤標記上vd.FromGatewayId
告訴我,The name 'vd' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
然而,如果我與gw.GatewayId
交換雙方,那麼我得到相同的錯誤消息vd
和gw
。 有人可以在這裏建議正確的語法嗎? 請記住,我有幾個左連接添加後,我得到的基本語法。
我很可能會誤解,但爲了繼續做左外連接,不應該將'v.FromGatewayId'等於fgw.GatewayId'從sdgw.DefaultIfEmpty()'中的g放入sdgw中,而不是'再次使用sdvd.DefaultIfEmpty()? – Black 2014-12-07 23:15:06