Rejoignez les opérateurs dans LINQ

La jointure fait référence à une opération dans laquelle des sources de données avec des relations difficiles à suivre les unes avec les autres de manière directe sont ciblées.

Opérateur La description Syntaxe de l'expression de requête C # Syntaxe d'expression de requête VB
Joindre L'opérateur joint deux séquences sur la base de clés correspondantes rejoindre… dans… sur… égal… De x dans…, y dans… où xa = ya
Rejoindre un groupe Joindre deux séquences et regrouper les éléments correspondants rejoindre… dans… sur… égal… dans… Rejoindre le groupe… Dans… Le…

Exemple de jointure - Expression de requête

C #

using System;
using System.Collections.Generic;
using System.Linq;

namespace Operators {
   class JoinTables {
      class DepartmentClass {
         public int DepartmentId { get; set; }
         public string Name { get; set; }
      }

      class EmployeeClass {
         public int EmployeeId { get; set; }
         public string EmployeeName { get; set; }
         public int DepartmentId { get; set; }
      }

      static void Main(string[] args) {
      
         List <DepartmentClass> departments = new List <DepartmentClass>();
         departments.Add(new DepartmentClass { DepartmentId = 1, Name = "Account" });
         departments.Add(new DepartmentClass { DepartmentId = 2, Name = "Sales" });
         departments.Add(new DepartmentClass { DepartmentId = 3, Name = "Marketing" });
       
         List <EmployeeClass> employees = new List <EmployeeClass>();
         employees.Add(new EmployeeClass { DepartmentId = 1, EmployeeId = 1, EmployeeName = "William" });
         employees.Add(new EmployeeClass { DepartmentId = 2, EmployeeId = 2, EmployeeName = "Miley" });
         employees.Add(new EmployeeClass { DepartmentId = 1, EmployeeId = 3, EmployeeName = "Benjamin" });


         var list = (from e in employees join d in departments on e.DepartmentId equals d.DepartmentId select new {
            EmployeeName = e.EmployeeName,
            DepartmentName = d.Name
         });
            
         foreach (var e in list) {
            Console.WriteLine("Employee Name = {0} , Department Name = {1}", e.EmployeeName, e.DepartmentName);
         }

         Console.WriteLine("\nPress any key to continue.");
         Console.ReadKey(); 
      }
   }
}

VB

Module Module1

   Sub Main()
   
      Dim account As New Department With {.Name = "Account", .DepartmentId = 1}
      Dim sales As New Department With {.Name = "Sales", .DepartmentId = 2}
      Dim marketing As New Department With {.Name = "Marketing", .DepartmentId = 3}

      Dim departments As New System.Collections.Generic.List(Of Department)(New Department() {account, sales, marketing})

      Dim william As New Employee With {.EmployeeName = "William", .EmployeeId = 1, .DepartmentId = 1}
      Dim miley As New Employee With {.EmployeeName = "Miley", .EmployeeId = 2, .DepartmentId = 2}
      Dim benjamin As New Employee With {.EmployeeName = "Benjamin", .EmployeeId = 3, .DepartmentId = 1}

      Dim employees As New System.Collections.Generic.List(Of Employee)(New Employee() {william, miley, benjamin})

      Dim list = (From e In employees
                  Join d In departments On e.DepartmentId Equals d.DepartmentId
                  Select New Person With {.EmployeeName = e.EmployeeName, .DepartmentName = d.Name})

      For Each e In list
         Console.WriteLine("Employee Name = {0} , Department Name = {1}", e.EmployeeName, e.DepartmentName)
      Next

      Console.WriteLine(vbLf &"Press any key to continue.")
      Console.ReadKey()
   End Sub

   Class Employee
      Public Property EmployeeId As Integer
      Public Property EmployeeName As String
      Public Property DepartmentId As Integer
   End Class

   Class Department
      Public Property Name As String
      Public Property DepartmentId As Integer
   End Class

   Class Person
      Public Property EmployeeName As String
      Public Property DepartmentName As String
   End Class
   
End Module

Lorsque le code ci-dessus de C # ou VB est compilé et exécuté, il produit le résultat suivant -

Emplyee Name = William, Department Name = Account
Emplyee Name = Miley, Department Name = Sales
Emplyee Name = Benjamin, Department Name = Account

Press any key to continue.