Sdílet prostřednictvím


Join – klauzule (Visual Basic)

Kombinuje dvě kolekce do jedné kolekce.Operace join je založena na odpovídající klíče a používá Equals operátor.

Join element In collection _
  [ joinClause _ ] 
  [ groupJoinClause ... _ ] 
On key1 Equals key2 [ And key3 Equals key4 [... ]

Části

  • element
    Povinné.Řídicí proměnná kolekce je připojen.

  • collection
    Povinné.Kolekce sloučit s kolekcí identifikovány na levé straně Join operátor.A Join mohou být vnořené klauzuli v jiném Join klauzule, nebo Group Join klauzule.

  • joinClause
    Nepovinné.Jeden nebo více dalších Join klauzule pro další upřesnění dotazu.

  • groupJoinClause
    Nepovinné.Jeden nebo více dalších Group Join klauzule pro další upřesnění dotazu.

  • key1 Equals key2
    Povinné.Identifikuje klíče pro kolekce je připojen.Je nutné použít Equals operátor porovnání klíčů z kolekce je připojen.Můžete kombinovat podmínky spojení pomocí And operátor identifikovat více klíčů.key1musí být z kolekce na levé straně Join operátor.key2musí být z kolekce na pravé straně Join operátor.

    Klávesy používané v podmínce spojení může být výrazy, které obsahují více než jednu položku z kolekce.Každý výraz klíče však může obsahovat pouze položky z jeho příslušných kolekce.

Poznámky

Join Klauzule kombinuje dvě kolekce založené na odpovídající klíčové hodnoty z kolekce je připojen.Výsledná sada může obsahovat libovolnou kombinaci hodnot z kolekce identifikovány na levé straně Join operátor a identifikovány v kolekci Join klauzule.Dotaz vrátí pouze výsledky, které podmínky určené Equals operátor je splněna.To je ekvivalentní INNER JOIN jazyka SQL.

Můžete použít více Join klauzule dotazu k připojení dvou nebo více kolekcí do jedné kolekce.

Implicitní spojení kolekce bez sloučení lze provést Join klauzule.Provedete zahrnout více In doložek v vaše From klauzule a zadat Where klauzule, který identifikuje klíče, které chcete použít pro spojení.

Můžete použít Group Join klauzule sloučit do jediného hierarchickou kolekci kolekce.To je jako LEFT OUTER JOIN jazyka SQL.

Příklad

Následující příklad kódu provádí implicitní spojení sloučit seznam zákazníků s jejich objednávek.

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

Následující příklad kódu pomocí spojuje dvě kolekce Join klauzule.

Imports System.Diagnostics
Imports System.Security.Permissions

Public Class JoinSample

  <SecurityPermission(SecurityAction.Demand)>
  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

V tomto příkladu bude vyprodukovat výstup podobný následujícímu:

winlogon (968), Windows Logon

explorer (2424), File Explorer

cmd (5136), Command Window

Následující příklad kódu pomocí spojuje dvě kolekce Join klauzule se dvěma sloupci klíče.

Imports System.Diagnostics
Imports System.Security.Permissions

Public Class JoinSample2

  <SecurityPermission(SecurityAction.Demand)>
  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

Příklad vygeneruje výstup podobný následujícímu:

winlogon (968), Windows Logon, Priority = 13

cmd (700), Command Window, Priority = 8

explorer (2424), File Explorer, Priority = 8

Viz také

Referenční dokumentace

Select – klauzule (Visual Basic)

From – klauzule (Visual Basic)

Group Join – klauzule (Visual Basic)

Where – klauzule (Visual Basic)

Koncepty

Představení technologie LINQ v jazyce Visual Basic

Další zdroje

Dotazy (Visual Basic)