عبارة 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 لتنقية الاستعلام.

  • key1Equalskey2
    مطلوبة. تعرّف مفاتيح لمجموعات يتم ضمها. يجب عليك استخدام عامل التشغيل Equals لمقارنة مفاتيح من المجموعات التي يتم ضمها. يمكنك جمع شروط join عن طريق استخدام عامل التشغيل And للتعرف على عدة مفاتيح. key1 يجب أن يكون من المجموعة الجانب اليسار من Join. key2 يجب أن يكون من المجموعة الجانب الأيمن من Join.

    يمكن أن تكون المفاتيح المستخدمة في شرط join تعبيرات التي تحتوي على عنصر واحد أو أكثر من مجموعة. ومع ذلك، يمكن أن يحتوي تعبير كل المفتاح على العناصر فقط من مجموعة الخاصة به.

ملاحظات

الجملة Join يضم مجموعتين المستندة على مطابقة قيم المفتاح من المجموعة يتم ضمها. يمكن أن تحتوي مجموعة الناتج على أية تركيبة من القيم من مجموعة التعرّف على الجانب الأيمن من عامل التشغيل Join ومجموعة المعرفة في جملة Join. سيقوم الاستعلام بإرجاع نتائج فقط بواسطة الشروط المحددة بعامل التشغيل Equals . هذا المكافئ إلى INNER JOIN في SQL.

يمكنك استخدام عدة عبارات Join في استعلام لضم مجموعات أو أكثر إلى مفرد مجموعة.

يمكنك تنفيذ ربط ضمني ليجمع مجموعات دون جملة Join. لذلك قم بتضمين عدة عبارات In في جملة From و تحديد جملة Where التي تعرف المفاتيح التي تريد لاستخدامها في الصلة.

يمكنك استخدام جملة Group Join لضم مجموعات في مجموعة هرمية. هذا مثل LEFT OUTER JOIN في SQL.

مثال

مثال التعليمات البرمجية التالية ربط ضمني لجمع قائمة العملاء مع الطلبات الخاصة بهم.

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

التعليمات البرمجية المثال التالية يربط مجموعتين باستخدام جملة Join.

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

هذا المثال سوف ينتج إخراج مشابه للتالي:

winlogon (968), Windows Logon

explorer (2424), Windows Explorer

cmd (5136), Command Window

التعليمات البرمجية التالية يليهل مثال يربط مجموعتين باستخدام جملة Join ذات عمودين المفتاح.

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

هذا المثال سوف ينتج إخراج مشابه للتالي:

winlogon (968), Windows Logon, Priority = 13

cmd (700), Command Window, Priority = 8

explorer (2424), Windows Explorer, Priority = 8

راجع أيضًا:

المرجع

تحديد العبارة (Visual Basic)

فقرة From (Visual Basic)

عبارة ربط مجموعة (Visual Basic)

عبارة Visual Basic) where)

المبادئ

مقدمة حول LINQ في Visual Basic

موارد أخرى

استعلامات (Visual Basic)