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

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

Mary-Kate Olsen
發布: 2024-12-31 22:16:17
原創
535 人瀏覽過

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

LINQ to SQL:實作具有多個聯結條件的左外聯接

LINQ to SQL 允許使用 C# 建立複雜的查詢語法。一項常見任務是實現具有多個連接條件的左外連接。

要了解在JOIN 語句而不是WHERE 子句中包含連接條件的必要性,請考慮以下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
登入後複製

這裡,即使事實表(f) 沒有對應於某個時期的行,我們仍然希望該時期包含在結果中。將附加連接條件放在 WHERE 子句中會在結果中省略此類句點。

LINQ to SQL 的解決方案涉及使用擴充方法語法。以下程式碼片段示範如何操作:

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
登入後複製

透過將連接條件放在JOIN 語句中,我們確保只有具有滿足otherid = 17 條件的相應事實包含在結果中,同時仍執行左外連接。這種方法使我們能夠在不犧牲左外連結的好處的情況下實現所需的行為。

以上是如何在 LINQ to SQL 中實現具有多個聯結條件的左外聯接?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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