Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Combineert twee verzamelingen in één verzameling. De join-bewerking is gebaseerd op overeenkomende sleutels en maakt gebruik van de Equals operator.
Syntaxis
Join element In collection _
[ joinClause _ ]
[ groupJoinClause ... _ ]
On key1 Equals key2 [ And key3 Equals key4 [... ] ]
Onderdelen
element Vereist. De besturingsvariabele voor de verzameling die wordt toegevoegd.
collection
Verplicht. De verzameling die moet worden gecombineerd met de verzameling die aan de linkerkant van de Join operator is geïdentificeerd. Een Join component kan worden genest in een andere Join component of in een Group Join component.
joinClause
Facultatief. Een of meer aanvullende Join componenten om de query verder te verfijnen.
groupJoinClause
Facultatief. Een of meer aanvullende Group Join componenten om de query verder te verfijnen.
key1
Equals
key2
Verplicht. Identificeert sleutels voor de verzamelingen die worden gekoppeld. U moet de Equals operator gebruiken om sleutels te vergelijken van de verzamelingen die worden gekoppeld. U kunt joinvoorwaarden combineren met behulp van de And operator om meerdere sleutels te identificeren.
key1 moet afkomstig zijn uit de verzameling aan de linkerkant van de Join operator.
key2 moet afkomstig zijn uit de verzameling aan de rechterkant van de Join operator.
De sleutels die in de joinvoorwaarde worden gebruikt, kunnen expressies zijn die meer dan één item uit de verzameling bevatten. Elke sleutelexpressie kan echter alleen items uit de respectieve verzameling bevatten.
Opmerkingen
De Join component combineert twee verzamelingen op basis van overeenkomende sleutelwaarden van de verzamelingen die worden gekoppeld. De resulterende verzameling kan elke combinatie van waarden uit de verzameling bevatten die aan de linkerkant van de Join operator is geïdentificeerd en de verzameling die in de Join component is geïdentificeerd. De query retourneert alleen resultaten waarvoor aan de voorwaarde is voldaan die is opgegeven door de Equals operator. Dit komt overeen met een INNER JOIN in SQL.
U kunt meerdere Join componenten in een query gebruiken om twee of meer verzamelingen aan één verzameling toe te voegen.
U kunt een impliciete join uitvoeren om verzamelingen te combineren zonder de Join component. U doet dit door meerdere In componenten in uw From component op te nemen en een Where component op te geven die de sleutels identificeert die u voor de join wilt gebruiken.
U kunt de Group Join component gebruiken om verzamelingen te combineren in één hiërarchische verzameling. Dit is als een LEFT OUTER JOIN in SQL.
Voorbeeld 1
In het volgende codevoorbeeld wordt een impliciete join uitgevoerd om een lijst met klanten met hun orders te combineren.
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
Voorbeeld 2
In het volgende codevoorbeeld worden twee verzamelingen samengevoegd met behulp van de Join component.
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
In dit voorbeeld wordt uitvoer geproduceerd die vergelijkbaar is met de volgende:
winlogon (968), Windows Logon
explorer (2424), File Explorer
cmd (5136), Command Window
Voorbeeld 3
In het volgende codevoorbeeld worden twee verzamelingen samengevoegd met behulp van de Join component met twee sleutelkolommen.
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
In het voorbeeld wordt uitvoer geproduceerd die vergelijkbaar is met de volgende:
winlogon (968), Windows Logon, Priority = 13
cmd (700), Command Window, Priority = 8
explorer (2424), File Explorer, Priority = 8