首頁 > 後端開發 > C++ > 如何使用多個聯結條件執行 LINQ to SQL 左外聯接?

如何使用多個聯結條件執行 LINQ to SQL 左外聯接?

Linda Hamilton
發布: 2025-01-05 12:11:40
原創
561 人瀏覽過

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

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
登入後複製
使用DefaultIfEmpty() 的翻譯

使用DefaultIfEmpty() 的典型連接合併附加連接條件需要仔細考慮。

以下初始嘗試雖然語法正確,但不會產生所需的結果:

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
登入後複製
為了實現所需的行為,附加連接呼叫 DefaultIfEmpty() 之前必須引入條件。這是使用擴展方法語法或子查詢來完成的:

擴展方法語法

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板