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