聯結作業
更新:2007 年 11 月
將兩個資料來源「聯結」(Join),就是指將某個資料來源中的物件與另一個資料來源中擁有共同屬性的物件關聯在一起。
當要查詢的資料來源彼此沒有直接的關聯性 (Relationship) 時,聯結是一項很重要的作業。在物件導向程式設計中,這表示物件之間的相互關聯模式尚未建立 (如單向關聯性的反向方向)。單向關聯性的例子是,Customer 類別 (Class) 具有 City 型別的屬性,但是 City 類別沒有屬性可包含 Customer 物件的集合。如果您有 City 物件的清單,而且想要尋找每個城市的所有客戶,就可以使用聯結作業加以尋找。
LINQ 架構提供的聯結方法有 Join 和 GroupJoin。這些方法會執行等聯結 (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 = b.a -或- Join … [As …]In … On … |
|
GroupJoin |
根據索引鍵選取器函式聯結兩個序列,並將每個項目產生的相符項目分組。 |
join … in … on … equals … into … |
Group Join … In … On … |
進一步了解如何執行聯結作業
請參閱
工作
HOW TO:編寫聯結和叉積查詢 (LINQ to SQL)