LINQ to SQL:透過多個聯結條件增強左外聯
在LINQ to SQL 中,左外接提供了一種左外接提供了一種強大的組合機制來自多個表的資料。然而,在處理涉及附加連接條件的場景時,有必要探索擴展標準方法的技術。
考慮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
此查詢旨在從以下位置檢索資料: 'period' 和'facts' 表,在'id' 和'periodid' 列上應用左外連接。此外,它還包括一個進一步的聯接條件“f.otherid = 17”,用於過濾結果。
在 LINQ to SQL 中,左外聯接的典型實作涉及使用「DefaultIfEmpty()」方法。然而,為了適應額外的連接條件,我們需要修改我們的方法。
以下 LINQ 查詢達到了預期的結果:
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
這裡,我們在'.Where()' 子句,確保根據 'f.otherid = 篩選 'fg'分組中的行選擇17'.
或者,我們可以利用子查詢:
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中文網其他相關文章!