Join 절(Visual Basic)
두 컬렉션을 단일 컬렉션으로 결합합니다. 조인 작업은 일치하는 키를 기반으로 하며 Equals
연산자를 사용합니다.
구문
Join element In collection _
[ joinClause _ ]
[ groupJoinClause ... _ ]
On key1 Equals key2 [ And key3 Equals key4 [... ]
부분
element
필수입니다. 조인되는 컬렉션에 대한 제어 변수입니다.
collection
필수입니다. Join
연산자의 왼쪽에 식별된 컬렉션과 결합할 컬렉션입니다. Join
절은 다른 Join
절이나 Group Join
절에 중첩될 수 있습니다.
joinClause
선택 사항. 쿼리를 더 구체화하기 위한 하나 이상의 추가 Join
절입니다.
groupJoinClause
선택 사항. 쿼리를 더 구체화하기 위한 하나 이상의 추가 Group Join
절입니다.
key1
Equals
key2
필수입니다. 조인되는 컬렉션의 키를 식별합니다. 조인되는 컬렉션의 키를 비교하려면 Equals
연산자를 사용해야 합니다. 여러 키를 식별하기 위해 And
연산자를 사용하여 조인 조건을 결합할 수 있습니다. key1
은 Join
연산자 왼쪽에 있는 컬렉션에서 가져와야 합니다. key2
는 Join
연산자 오른쪽에 있는 컬렉션에서 가져와야 합니다.
조인 조건에 사용되는 키는 컬렉션에서 둘 이상의 항목을 포함하는 식일 수 있습니다. 그러나 각 키 식에는 해당 컬렉션의 항목만 포함될 수 있습니다.
설명
Join
절은 조인되는 컬렉션의 일치하는 키 값을 기반으로 두 컬렉션을 결합합니다. 결과 컬렉션에는 Join
연산자의 왼쪽에서 식별된 컬렉션과 Join
절에서 식별된 컬렉션의 값 조합이 포함될 수 있습니다. 쿼리는 Equals
연산자가 지정한 조건이 충족되는 결과만 반환합니다. 이는 SQL의 INNER JOIN
과 동등합니다.
쿼리에서 여러 Join
절을 사용하여 둘 이상의 컬렉션을 단일 컬렉션에 조인할 수 있습니다.
암시적 조인을 수행하여 Join
절 없이 컬렉션을 결합할 수 있습니다. 이렇게 하려면 From
절에 여러 In
절을 포함하고 조인에 사용할 키를 식별하는 Where
절을 지정합니다.
Group Join
절을 사용하여 컬렉션을 단일 계층형 컬렉션으로 결합할 수 있습니다. 이는 SQL의 LEFT OUTER JOIN
과 같습니다.
예 1
다음 코드 예제에서는 암시적 조인을 수행하여 고객 목록을 주문과 결합합니다.
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
예제 2
다음 코드 예제에서는 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
이 예제는 다음과 유사한 출력을 생성합니다.
winlogon (968), Windows Logon
explorer (2424), File Explorer
cmd (5136), Command Window
예 3
다음 코드 예제에서는 두 개의 키 열이 있는 Join
절을 사용하여 두 컬렉션을 조인합니다.
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
이 예제는 다음과 유사한 출력을 생성합니다.
winlogon (968), Windows Logon, Priority = 13
cmd (700), Command Window, Priority = 8
explorer (2424), File Explorer, Priority = 8
참고 항목
.NET