Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan gabungan luar kiri menggunakan kaedah sambungan linq dalam C#?

Bagaimana untuk melakukan gabungan luar kiri menggunakan kaedah sambungan linq dalam C#?

WBOY
WBOYke hadapan
2023-09-02 16:33:03885semak imbas

如何在 C# 中使用 linq 扩展方法执行左外连接?

Apabila menggunakan INNER JOIN, hanya elemen padanan akan dimasukkan ke dalam set hasil. Elemen yang tidak sepadan akan dikecualikan daripada set hasil.

Apabila menggunakan LEFT OUTER JOIN, semua elemen sepadan + semua elemen tidak sepadan dalam set kiri akan dimasukkan ke dalam set hasil.

Biarkan kami memahami pelaksanaan gabungan luar kiri melalui contoh. Pertimbangkan kelas Jabatan dan Pekerja berikut. Ambil perhatian bahawa pekerja Mary tidak mempunyai jabatan yang ditugaskan. Cantuman dalam tidak akan memasukkan rekodnya dalam set hasil, manakala cantuman luar kiri akan.

Contoh

static class Program{
   static void Main(string[] args){
      var result = Employee.GetAllEmployees()
      .GroupJoin(Department.GetAllDepartments(),
      e => e.DepartmentID,
      d => d.ID,
      (emp, depts) => new { emp, depts })
      .SelectMany(z => z.depts.DefaultIfEmpty(),
      (a, b) => new{
         EmployeeName = a.emp.Name,
         DepartmentName = b == null ? "No Department" : b.Name
      });
      foreach (var v in result){
         Console.WriteLine(" " + v.EmployeeName + "\t" + v.DepartmentName);
      }
   }
}
public class Department{
   public int ID { get; set; }
   public string Name { get; set; }
   public static List<Department> GetAllDepartments(){
      return new List<Department>(){
         new Department { ID = 1, Name = "IT"},
         new Department { ID = 2, Name = "HR"},
      };
   }
}
public class Employee{
   public int ID { get; set; }
   public string Name { get; set; }
   public int DepartmentID { get; set; }
   public static List<Employee> GetAllEmployees(){
      return new List<Employee>(){
         new Employee { ID = 1, Name = "Mark", DepartmentID = 1 },
         new Employee { ID = 2, Name = "Steve", DepartmentID = 2 },
         new Employee { ID = 3, Name = "Ben", DepartmentID = 1 },
         new Employee { ID = 4, Name = "Philip", DepartmentID = 1 },
         new Employee { ID = 5, Name = "Mary" }
      };
   }
}

Atas ialah kandungan terperinci Bagaimana untuk melakukan gabungan luar kiri menggunakan kaedah sambungan linq dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam