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