LINQ to SQL:具有多個聯接條件的左外聯
在LINQ to SQL 中,將涉及具有多個聯接的左側外接的SQL 查詢轉換為條件可能具有挑戰性。本文解決了需要將具有左外連接和附加連接條件的 SQL 查詢轉換為 LINQ 的場景。
SQL 查詢
SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100
LINQ 翻譯
使用DefaultIfEmpty() 的翻譯
使用DefaultIfEmpty() 的翻譯
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.DefaultIfEmpty() where p.companyid == 100 && fgi.otherid == 17 select f.value
以下初始嘗試雖然語法正確,但不會產生所需的結果:
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty() where p.companyid == 100 select f.value
擴展方法語法
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in (from f in fg where f.otherid == 17 select f).DefaultIfEmpty() where p.companyid == 100 select f.value
以上是如何使用多個聯結條件執行 LINQ to SQL 左外聯接?的詳細內容。更多資訊請關注PHP中文網其他相關文章!