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

WBOY
Lepaskan: 2023-09-02 16:33:03
ke hadapan
862 orang telah melayarinya

如何在 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" }
      };
   }
}
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!