聯結作業
兩個資料來源的 「聯結」(Join),就是某個資料來源中的物件,和另一個資料來源中共用通用屬性的物件的關聯。
對於不能直接追蹤目標資料來源彼此之間的關聯性的查詢而言,聯結是很重要的作業。 在物件導向的程式設計中,這可能表示物件之間的相互關聯沒有模組化,例如單向關聯性的返回方向。 一個單向關聯性的範例是「客戶」類別,其具有類型「城市」的屬性,但「城市」類別沒有「客戶」物件集合的屬性。 若您有「城市」物件清單,且您想要尋找每個城市中的所有客戶,您就可以使用聯結作業來尋找客戶。
LINQ 架構中提供的聯結方法為 Join``4 及 GroupJoin``4。這些方法會執行等聯結 (equijoins),或是執行根據其索引鍵相等與否配對兩個資料來源的聯結。 (相較下,Transact-SQL 支援「等於」運算子以外的聯結運算子,例如「小於」運算字)。在關聯式資料庫堆規定中,Join``4 會實作內部聯結,在這種聯結中,只會傳回在其他資料集中有相符項目的物件。 GroupJoin``4 方法不直接等同於關聯式資料庫規定,而會實作內部聯結及左外部聯結的超集。左外部聯結是傳回第一個 (左) 資料來源中每個項目的聯結 (即使其在其他資料來源中沒有相互關聯的項目)。
以下概念圖示範兩個集合,以及兩個集合中包含在內部聯結或左外部聯結中的項目。
方法
方法名稱 |
描述 |
C# 查詢運算式語法 |
Visual Basic 查詢運算式語法 |
詳細資訊 |
---|---|---|---|---|
Join |
根據索引鍵選取器函式聯結兩個序列並擷取值組。 |
join … in … on … equals … |
From x In …, y In … Where x.a = y.a -或- Join … [As …]In … On … |
|
GroupJoin |
根據索引鍵選取器函式聯結兩個序列,並為每個項目的相符結果進行分組。 |
join … in … on … equals … into … |
Group Join … In … On … |