Klausul Join (Visual Basic)
Menggabungkan dua koleksi menjadi satu koleksi. Operasi gabung didasarkan pada kunci yang cocok dan menggunakan operator Equals
.
Sintaks
Join element In collection _
[ joinClause _ ]
[ groupJoinClause ... _ ]
On key1 Equals key2 [ And key3 Equals key4 [... ]
Generator
element
Diperlukan. Variabel kontrol untuk koleksi yang digabungkan.
collection
Harus diisi. Koleksi yang akan digabung dengan koleksi yang diidentifikasi di sisi kiri dari operator Join
. Klausul Join
dapat bersarang dalam klausul Join
atau di klausul Group Join
yang lain.
joinClause
Opsional. Satu atau beberapa klausul Join
tambahan untuk lebih menyempurnakan kueri.
groupJoinClause
Opsional. Satu atau beberapa klausul Group Join
tambahan untuk lebih menyempurnakan kueri.
key1
Equals
key2
Harus diisi. Mengidentifikasi kunci untuk koleksi yang sedang digabungkan. Anda harus menggunakan operator Equals
untuk membandingkan kunci dari koleksi yang digabungkan. Anda dapat menggabungkan kondisi gabungan dengan menggunakan operator And
untuk mengidentifikasi beberapa kunci. key1
harus berasal dari koleksi di sisi kiri operator Join
. key2
harus berasal dari koleksi di sisi kanan operator Join
.
Kunci yang digunakan dalam kondisi gabungan dapat berupa ekspresi yang menyertakan lebih dari satu item dari koleksi tersebut. Namun, setiap ekspresi kunci hanya dapat berisi item dari koleksi masing-masing.
Keterangan
Klausa Join
menggabungkan 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 kiri operator Join
dan koleksi yang diidentifikasi dalam klausul Join
. Kueri hanya akan mengembalikan hasil jika kondisi yang ditentukan oleh operator Equals
terpenuhi. Ini setara dengan INNER JOIN
dalam SQL.
Anda bisa menggunakan beberapa klausul Join
dalam kueri untuk menggabungkan dua koleksi atau lebih ke dalam satu koleksi.
Anda dapat melakukan gabungan implisit untuk menggabungkan koleksi tanpa klausul Join
. Untuk melakukan ini, sertakan beberapa klausul In
dalam klausul From
milik Anda dan tentukan klausul Where
yang mengidentifikasi kunci yang ingin Anda gunakan untuk gabungan.
Anda dapat menggunakan klausul Group Join
untuk menggabungkan koleksi menjadi satu koleksi hierarkis. Ini seperti LEFT OUTER JOIN
di SQL.
Contoh 1
Contoh kode berikut melakukan penggabungan 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 klausa Join
.
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:
winlogon (968), Windows Logon
explorer (2424), File Explorer
cmd (5136), Command Window
Contoh 3
Contoh kode berikut menggabungkan dua koleksi dengan menggunakan klausul Join
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
Contoh akan menghasilkan output yang mirip dengan yang berikut:
winlogon (968), Windows Logon, Priority = 13
cmd (700), Command Window, Priority = 8
explorer (2424), File Explorer, Priority = 8
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk