Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İki koleksiyonu tek bir koleksiyonda birleştirir. Birleştirme işlemi eşleşen anahtarları temel alır ve işlecini Equals kullanır.
Sözdizimi
Join element In collection _
[ joinClause _ ]
[ groupJoinClause ... _ ]
On key1 Equals key2 [ And key3 Equals key4 [... ] ]
Parçalar
element Gerekli. Birleştirilen koleksiyonun denetim değişkeni.
collection
Gerekli. İşlecin sol tarafında Join tanımlanan koleksiyonla birleştirilen koleksiyon. Yan Join tümcesi başka bir Join yan tümcede veya yan Group Join tümcesinde iç içe yerleştirilebilir.
joinClause
Opsiyonel. Sorguyu daha da daraltmak için bir veya daha fazla Join ek yan tümce.
groupJoinClause
Opsiyonel. Sorguyu daha da daraltmak için bir veya daha fazla Group Join ek yan tümce.
key1
Equals
key2
Gerekli. Birleştirilmekte olan koleksiyonların anahtarlarını tanımlar. Birleştirilmekte olan Equals koleksiyonların anahtarlarını karşılaştırmak için işlecini kullanmanız gerekir. Birden çok anahtarı tanımlamak için işlecini And kullanarak birleştirme koşullarını birleştirebilirsiniz.
key1 işlecin sol tarafındaki Join koleksiyondan olmalıdır.
key2 işlecin sağ tarafındaki Join koleksiyondan olmalıdır.
Birleştirme koşulunda kullanılan anahtarlar, koleksiyondan birden fazla öğe içeren ifadeler olabilir. Ancak, her anahtar ifadesi yalnızca ilgili koleksiyonundaki öğeleri içerebilir.
Açıklamalar
yan tümcesi Join , birleştirilmekte olan koleksiyonlardaki eşleşen anahtar değerlerine göre iki koleksiyonu birleştirir. Sonuçta elde edilen koleksiyon, işlecin sol tarafında tanımlanan koleksiyondaki değerlerin Join herhangi bir bileşimini ve yan tümcesinde Join tanımlanan koleksiyonu içerebilir. Sorgu yalnızca işleç tarafından belirtilen koşulun Equals karşılandığı sonuçları döndürür. Bu, SQL'deki ile INNER JOIN eşdeğerdir.
İki veya daha fazla koleksiyonu tek bir koleksiyonda birleştirmek için sorguda birden çok Join yan tümce kullanabilirsiniz.
Yan tümcesi olmadan Join koleksiyonları birleştirmek için örtük birleştirme gerçekleştirebilirsiniz. Bunu yapmak için yan tümcenize From birden çok In yan tümce ekleyin ve birleşim için kullanmak istediğiniz anahtarları tanımlayan bir Where yan tümce belirtin.
Yan tümcesini Group Join kullanarak koleksiyonları tek bir hiyerarşik koleksiyonda birleştirebilirsiniz. Bu, SQL'deki gibi.LEFT OUTER JOIN
Örnek 1
Aşağıdaki kod örneği, bir müşteri listesini siparişleriyle birleştirmek için örtük bir birleşim 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
Örnek 2
Aşağıdaki kod örneği yan tümcesini kullanarak iki koleksiyonu birleştirir 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
Bu örnek aşağıdakine benzer bir çıkış oluşturur:
winlogon (968), Windows Logon
explorer (2424), File Explorer
cmd (5136), Command Window
Örnek 3
Aşağıdaki kod örneği, yan tümcesini Join iki anahtar sütunuyla kullanarak iki koleksiyonu birleştirir.
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
Örnek aşağıdakine benzer bir çıkış oluşturur:
winlogon (968), Windows Logon, Priority = 13
cmd (700), Command Window, Priority = 8
explorer (2424), File Explorer, Priority = 8
Ayrıca bakınız
- Visual Basic'da LINQ'e
Giriş - Arama Sorguları
- Seçim Deyimi
- From İfadesi
- Group Join Yan Tümcesi
- Where Yan Tümcesi