Heim > Artikel > Backend-Entwicklung > Wie führe ich einen Left Outer Join mithilfe von Linq-Erweiterungsmethoden in C# durch?
Bei Verwendung von INNER JOIN werden nur passende Elemente in die Ergebnismenge aufgenommen. Nicht übereinstimmende Elemente werden aus der Ergebnismenge ausgeschlossen.
Bei Verwendung von LEFT OUTER JOIN werden alle übereinstimmenden Elemente + alle nicht übereinstimmenden Elemente in der linken Menge in die Ergebnismenge einbezogen.
Lassen Sie uns die Implementierung von Left Outer Join anhand eines Beispiels verstehen. Betrachten Sie die folgenden Abteilungs- und Mitarbeiterklassen. Beachten Sie, dass der Mitarbeiterin Mary keine Abteilung zugewiesen ist. Der innere Join nimmt ihre Datensätze nicht in die Ergebnismenge auf, der linke äußere Join hingegen schon.
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" } }; } }
Das obige ist der detaillierte Inhalt vonWie führe ich einen Left Outer Join mithilfe von Linq-Erweiterungsmethoden in C# durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!