兩個數據源的 聯結是將一個數據源中的物件與另一個數據源中共用通用屬性的物件進行關聯。
聯結是針對彼此關聯性無法直接追蹤之數據源的查詢中的重要作業。 在面向物件程序設計中,這可能表示未建立模型的對象之間的相互關聯,例如單向關聯性的向後方向。 單向關聯性的範例是 Customer 類別,其具有 City 類型的屬性,但 City 類別沒有 Customer 物件的集合屬性。 如果你有一個 City 物件清單,想要尋找每個城市中的所有客戶,你可以使用連接操作來找到它們。
LINQ 架構中提供的聯結方法 Join 和 GroupJoin。 這些方法會執行等聯結,或是執行根據其索引鍵相等與否配對兩個資料來源的聯結。 (為了比較,Transact-SQL 支援 'equals' 以外的聯結運算符,例如 'less than' 運算符。在關係資料庫詞彙中, Join 實作內部聯結,其中只會傳回在其他數據集中具有相符對象的聯結類型。 GroupJoin 方法從關聯式資料庫觀點來看沒有直接的對應項目,但它會實作內部聯結和左方外部聯結的超集。 左外部聯結是一個聯結,即使在另一個數據源中沒有對應元素,也會傳回第一個(左)數據源的每個元素。
下圖顯示兩組集合的概念檢視,以及包含在內部聯結或左外部聯結中之集合內的元素。
方法
| 方法名稱 | 說明 | Visual Basic 查詢表達式語法 | 詳細資訊 |
|---|---|---|---|
| 加入 | 根據索引鍵選取器函式聯結兩個序列並擷取值組。 | From x In …, y In … Where x.a = y.a-或- Join … [As …]In … On … |
Enumerable.Join Queryable.Join |
| 群組加入 | 根據索引鍵選取器函式聯結兩個序列,並為每個項目的相符結果進行分組。 | Group Join … In … On … |
Enumerable.GroupJoin Queryable.GroupJoin |