首頁 > 後端開發 > C++ > 如何在 LINQ to SQL 中執行具有多個聯結條件的左外聯接?

如何在 LINQ to SQL 中執行具有多個聯結條件的左外聯接?

Barbara Streisand
發布: 2024-12-29 20:02:15
原創
529 人瀏覽過

How Can I Perform a Left Outer Join with Multiple Join Conditions in LINQ to SQL?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板