Linq聯接數據淺談
學習Linq時,經常會遇到Linq聯接數據問題,這里將介紹Linq聯接數據問題的解決方法。
Linq聯接數據(JOIN 或 GROUP JOIN):
您可以使用多種方法將多個數據源組合到 From 子句中。Join 關鍵字等效于 SQL 中的 INNER JOIN。它基于兩個集合中的元素之間的匹配鍵值對這兩個集合進行組合。例如:以下查詢姓氏以元音開頭的學生:
- Dim vowels() As String = {"A", "E", "I", "O", "U"}
- Dim vowelNames = From student In students, vowel In vowels _
- Where student.Last.IndexOf(vowel) = 0 _
- select Name = student.First & " " & _
- student.Last, Initial = vowel _
- Order By Initial
或者:
- Dim vowelNames2 = From student In students _
- Join vowel In vowels _
- On student.Last(0) Equals vowel _
- Select Name = student.First & " " & _
- student.Last, Initial = vowel _
- Order By Initial
Linq聯接數據相當于SQL中的LEFT OUTER JOIN,將多個集合組合為單個分層集合。
可以在查詢中使用多個 Join 子句,以便將兩個或更多集合聯接為單個集合。
在不使用 Join 子句的情況下,可以執行隱式聯接來組合集合。為此,應在 From 子句中包括多個 In 子句,并指定標識要用于聯接的鍵的 Where 子句。
完整語法:
- Group Join element [As type] In collection _
- On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
- Into expressionList
其中,expressionList是必須的,是一個或多個表達式,標識對集合中的元素組進行聚合的方式。若要為分組結果標識一個成員名稱,可使用 Group 關鍵字 (<alias> = Group)。
Linq聯接數據 運算將返回 Linq聯接數據 運算符左側標識的集合中的所有結果。即使要聯接的集合中沒有匹配項,也是如此。這與 SQL 中的 LEFT OUTER JOIN 類似。
【編輯推薦】