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
Group Join Tümcesi (Visual Basic)