Share via


聯結作業

將兩個資料來源「聯結」(Join),就是指將某個資料來源中的物件與另一個資料來源中擁有共同屬性的物件關聯在一起。

當要查詢的資料來源彼此沒有直接的關聯性時,聯結是一項很重要的作業。 在物件導向程式設計中,這表示物件之間的相互關聯模式尚未建立 (如單向關聯性的反向方向)。 單向關聯性的例子是,Customer 類別具有 City 型別的屬性,但是 City 類別沒有屬性可包含 Customer 物件的集合。 如果您有 City 物件的清單,而且想要尋找每個城市的所有客戶,就可以使用聯結作業加以尋找。

LINQ 架構提供的聯結方法有 JoinGroupJoin。這些方法會執行等聯結 (Equijoin),也就是根據索引鍵相等與否,將兩個資料來源互相對應的聯結 (相較於 Transact-SQL 支援的是「等於」以外的聯結運算子,例如「小於」運算子)。 在關聯式資料庫中,Join 會實作內部聯結 (Inner Join),這種聯結只會傳回在另一端的資料集中有相符項目的物件。 GroupJoin 方法在關聯式資料庫詞彙中沒有直接的對等項目,但是會實作內部聯結和左外部聯結 (Left Outer Join) 的超集。左外部聯結是指傳回第一個 (左) 資料來源中每個項目的聯結,即使它與另一個資料來源沒有相互關聯的項目也一樣。

下面的概念圖顯示了兩個集合中的完整項目,以及這兩個集合彼此進行內部聯結或左外部聯結之後剩下的項目。

顯示內部/外部的兩個重疊圓形。

方法

方法名稱

描述

C# 查詢運算式語法

Visual Basic 查詢運算式語法

詳細資訊

Join

根據索引鍵選取器函式聯結兩個序列,並擷取值組。

join … in … on … equals …

From x In …, y In … Where x.a = y.a

-或-

Join … [As …]In … On …

Enumerable.Join

Queryable.Join

GroupJoin

根據索引鍵選取器函式聯結兩個序列,並將每個項目產生的相符項目分組。

join … in … on … equals … into …

Group Join … In … On …

Enumerable.GroupJoin

Queryable.GroupJoin

請參閱

工作

How to: Formulate Joins and Cross-Product Queries (LINQ to SQL)

HOW TO:使用複合索引鍵執行聯結 (C# 程式設計手冊)

HOW TO:從不同的檔案聯結內容 (LINQ)

HOW TO:排序 Join 子句的結果 (C# 程式設計手冊)

HOW TO:執行自訂聯結作業 (C# 程式設計手冊)

HOW TO:執行群組聯結 (C# 程式設計手冊)

HOW TO:執行內部聯結 (C# 程式設計手冊)

HOW TO:執行左外部聯結 (C# 程式設計手冊)

HOW TO:從多個來源填入物件集合 (LINQ)

參考

System.Linq

匿名型別 (C# 程式設計手冊)

join 子句 (C# 參考)

Join 子句 (Visual Basic)

概念

標準查詢運算子概觀

匿名型別 (Visual Basic)

聯結類型