Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menggabungkan dua koleksi ke dalam satu koleksi. Operasi gabungan didasarkan pada kunci yang cocok dan menggunakan Equals operator.
Sintaksis
Join element In collection _
[ joinClause _ ]
[ groupJoinClause ... _ ]
On key1 Equals key2 [ And key3 Equals key4 [... ] ]
Bagian
element Diperlukan. Variabel kontrol untuk koleksi yang sedang digabungkan.
collection
Dibutuhkan. Koleksi untuk digabungkan dengan koleksi yang diidentifikasi di sisi Join kiri operator.
Join Klausa dapat disarangkan dalam klausa lainJoin, atau dalam Group Join klausa.
joinClause
Fakultatif. Satu atau beberapa klausa tambahan Join untuk menyempurnakan kueri lebih lanjut.
groupJoinClause
Fakultatif. Satu atau beberapa klausa tambahan Group Join untuk menyempurnakan kueri lebih lanjut.
key1
Equals
key2
Dibutuhkan. Mengidentifikasi kunci untuk koleksi yang sedang digabungkan. Anda harus menggunakan Equals operator untuk membandingkan kunci dari koleksi yang digabungkan. Anda dapat menggabungkan kondisi gabungan dengan menggunakan And operator untuk mengidentifikasi beberapa kunci.
key1 harus dari koleksi di sisi Join kiri operator.
key2 harus dari koleksi di sisi Join kanan operator.
Kunci yang digunakan dalam kondisi gabungan dapat berupa ekspresi yang menyertakan lebih dari satu item dari koleksi. Namun, setiap ekspresi kunci hanya dapat berisi item dari koleksinya masing-masing.
Komentar
Klausa menggabungkan Join dua koleksi berdasarkan nilai kunci yang cocok dari koleksi yang digabungkan. Koleksi yang dihasilkan dapat berisi kombinasi nilai apa pun dari koleksi yang diidentifikasi di sisi Join kiri operator dan koleksi yang diidentifikasi dalam Join klausa. Kueri hanya akan mengembalikan hasil yang kondisinya ditentukan oleh Equals operator terpenuhi. Ini setara dengan INNER JOIN di SQL.
Anda bisa menggunakan beberapa Join klausa dalam kueri untuk menggabungkan dua atau beberapa koleksi ke dalam satu koleksi.
Anda dapat melakukan gabungan implisit untuk menggabungkan koleksi tanpa Join klausa. Untuk melakukan ini, sertakan beberapa In klausa dalam klausa Anda From dan tentukan Where klausa yang mengidentifikasi kunci yang ingin Anda gunakan untuk gabungan.
Anda dapat menggunakan Group Join klausul untuk menggabungkan koleksi ke dalam satu koleksi hierarkis. Ini seperti LEFT OUTER JOIN di SQL.
Contoh 1
Contoh kode berikut melakukan gabungan implisit untuk menggabungkan daftar pelanggan dengan pesanan mereka.
Dim customerIDs() = {"ALFKI", "VICTE", "BLAUS", "TRAIH"}
Dim customerList = From cust In customers, custID In customerIDs
Where cust.CustomerID = custID
Select cust.CompanyName
For Each companyName In customerList
Console.WriteLine(companyName)
Next
Contoh 2
Contoh kode berikut menggabungkan dua koleksi dengan menggunakan Join klausul .
Imports System.Diagnostics
Public Class JoinSample
Public Sub ListProcesses()
Dim processDescriptions As New List(Of ProcessDescription)
processDescriptions.Add(New ProcessDescription With {
.ProcessName = "explorer",
.Description = "Windows Explorer"})
processDescriptions.Add(New ProcessDescription With {
.ProcessName = "winlogon",
.Description = "Windows Logon"})
processDescriptions.Add(New ProcessDescription With {
.ProcessName = "cmd",
.Description = "Command Window"})
processDescriptions.Add(New ProcessDescription With {
.ProcessName = "iexplore",
.Description = "Internet Explorer"})
Dim processes = From proc In Process.GetProcesses
Join desc In processDescriptions
On proc.ProcessName Equals desc.ProcessName
Select proc.ProcessName, proc.Id, desc.Description
For Each proc In processes
Console.WriteLine("{0} ({1}), {2}",
proc.ProcessName, proc.Id, proc.Description)
Next
End Sub
End Class
Public Class ProcessDescription
Public ProcessName As String
Public Description As String
End Class
Contoh ini akan menghasilkan output yang mirip dengan yang berikut ini:
winlogon (968), Windows Logon
explorer (2424), File Explorer
cmd (5136), Command Window
Contoh 3
Contoh kode berikut menggabungkan dua koleksi dengan menggunakan Join klausa dengan dua kolom kunci.
Imports System.Diagnostics
Public Class JoinSample2
Public Sub ListProcesses()
Dim processDescriptions As New List(Of ProcessDescription2)
' 8 = Normal priority, 13 = High priority
processDescriptions.Add(New ProcessDescription2 With {
.ProcessName = "explorer",
.Description = "Windows Explorer",
.Priority = 8})
processDescriptions.Add(New ProcessDescription2 With {
.ProcessName = "winlogon",
.Description = "Windows Logon",
.Priority = 13})
processDescriptions.Add(New ProcessDescription2 With {
.ProcessName = "cmd",
.Description = "Command Window",
.Priority = 8})
processDescriptions.Add(New ProcessDescription2 With {
.ProcessName = "iexplore",
.Description = "Internet Explorer",
.Priority = 8})
Dim processes = From proc In Process.GetProcesses
Join desc In processDescriptions
On proc.ProcessName Equals desc.ProcessName And
proc.BasePriority Equals desc.Priority
Select proc.ProcessName, proc.Id, desc.Description,
desc.Priority
For Each proc In processes
Console.WriteLine("{0} ({1}), {2}, Priority = {3}",
proc.ProcessName,
proc.Id,
proc.Description,
proc.Priority)
Next
End Sub
End Class
Public Class ProcessDescription2
Public ProcessName As String
Public Description As String
Public Priority As Integer
End Class
Contohnya akan menghasilkan output yang mirip dengan yang berikut ini:
winlogon (968), Windows Logon, Priority = 13
cmd (700), Command Window, Priority = 8
explorer (2424), File Explorer, Priority = 8