我正在嘗試使用linq做左外連接。我發誓這幾個星期前我寫作和測試了它,但現在它並沒有真正加入雙方。linq左外連接的產品不保持右側
var combined = from h in historyTable
join d in (from d in deviceTable where d.DeviceType == 5 select d) on h.SerialNumber equals d.SerialNumber into dh
from subDH in dh.DefaultIfEmpty()
select subDH;
這應該作爲一個左外連接,對嗎?我不會錯過一些至關重要的事情,因爲所有這些都應該在SerialNumber中加入每個表。我做了一個SQL版本,它工作得很好。
SELECT *
FROM [deviceTable] AS [t0]
LEFT OUTER JOIN (
SELECT *
FROM [historyTable]
) AS [t1] ON [t0].[SerialNumber] = [t1].[SerialNumber]
WHERE [t0].[DeviceType] = 5
GO
我在做什麼不正確?
你可以在執行命令後描述'combined'中包含的內容嗎?是否有運行時錯誤?編譯時錯誤?如果有輸出,它與預期的有什麼不同? – lsuarez