Wie führe ich einen Left Outer Join mithilfe von Linq-Erweiterungsmethoden in C# durch?

WBOY
Freigeben: 2023-09-02 16:33:03
nach vorne
928 Leute haben es durchsucht

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

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.

Beispiel

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" }
      };
   }
}
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage