Join Tümcesi (Visual Basic)

İki koleksiyonları tek bir koleksiyon halinde birleştirir.Birleştirme işlemi anahtarları eşleşen üzerinde temel alan ve kullanan Equals işleci.

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

Bölümleri

  • element
    Gerekli.Katılınan koleksiyonu denetim değişkeni.

  • collection
    Gerekli.Sol tarafında tanımlanan koleksiyonu ile birleştirmek için toplama Join işleci.A Join yan tümcesini içe olabilir başka bir Join yan tümcesi veya bir Group Join yan tümcesi.

  • joinClause
    İsteğe Bağlı.Bir veya daha fazla Join daha fazla yan tümcelerini sorgu iyileştirmek.

  • groupJoinClause
    İsteğe Bağlı.Bir veya daha fazla Group Join daha fazla yan tümcelerini sorgu iyileştirmek.

  • key1 Equals key2
    Gerekli.Katılınan koleksiyonları tuşları tanımlar.Kullanmanız gereken Equals Katılınan koleksiyonları anahtarlarından karşılaştırma işleci.Birleştirme koşullarını kullanarak birleştirmek And birden çok anahtar tanımlamak için işleci.key1sol tarafındaki koleksiyonundan olmalıdır Join işleci.key2sağ alt tarafındaki koleksiyonundan olmalıdır Join işleci.

    JOIN koulunun kullanılan anahtarlar koleksiyonundan birden fazla öğe içeren ifadeler olabilir.Bununla birlikte, her anahtar ifade yalnızca kendi ilgili koleksiyon öğeleri içerebilir.

Notlar

Join Yan tümcesi Katılınan koleksiyonları anahtar değerlerini eşleştirmek üzerine iki topluluk bir araya getirir.Sonuçta ortaya çıkan koleksiyon sol tarafında tanımlanan koleksiyonundan değerlerin herhangi bir bileşimi içerebilir Join işleci ve tanımlanan koleksiyonu Join yan tümcesi.Sorgu yalnızca kendisi için koşul belirtilen sonuçları verecektir Equals işleci yerine getirilmesi.Bunun eşdeğeri olan bir INNER JOIN SQL.

Birden fazla kullanabilirsiniz Join tek bir koleksiyon iki veya daha fazla koleksiyonlara katılmak için bir sorgu yan tümceleri.

Koleksiyonlar olmasa birleştirmek için örtülü bir birleştirme gerçekleştirebilir Join yan tümcesi.Bunu yapmak için birden çok dahil In yan tümcelerini sizin From yan tümcesi ve bir Where birleştirme için kullanmak istediğiniz tuşları tanımlayan yan tümcesi.

Kullanabileceğiniz Group Join tek bir sıradüzenli topluluğu koleksiyonlara birleştirmek için yan tümcesi.Bu gibi bir LEFT OUTER JOIN SQL.

Örnek

Aşağıdaki kod örneği, emirleri ile müşterilerin listesini birleştirmek için örtülü bir birleştirme gerçekleştirir.

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

Aşağıdaki kod örneği kullanarak iki topluluk birleştiren Join yan tümcesi.

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

Bu örnek, aşağıdakine benzer bir çıktı üretecektir:

winlogon (968), Windows Logon

explorer (2424), File Explorer

cmd (5136), Command Window

Aşağıdaki kod örneği kullanarak iki topluluk birleştiren Join iki anahtar sütunları ile yan tümcesi.

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

Örneğin, aşağıdakine benzer bir çıktı üretecektir:

winlogon (968), Windows Logon, Priority = 13

cmd (700), Command Window, Priority = 8

explorer (2424), File Explorer, Priority = 8

Ayrıca bkz.

Başvuru

Select Tümcesi (Visual Basic)

From Tümcesi (Visual Basic)

Group Join Tümcesi (Visual Basic)

Where Tümcesi (Visual Basic)

Kavramlar

Visual Basic'de LINQ'e Giriş

Diğer Kaynaklar

Sorgular (Visual Basic)