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.
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!