C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でlinq拡張メソッドを使用して左外部結合を実行するにはどうすればよいですか?


内部結合を使用 一致する要素のみが結果セットに含まれます。一致しない要素は結果セットから除外されます。

LEFT OUTER JOIN すべての一致する要素+左側のコレクションのすべての一致しない要素が結果セットに含まれます。

例を使用して、左外部結合の実装を理解しましょう。次の部門と従業員のクラスを検討してください。従業員メアリーには部門が割り当てられていないことに注意してください。内部結合では、結果セットに彼女のレコードが含まれませんが、左外部結合では含まれます。

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" }
      };
   }
}

  1. Pythonを使用してファイル拡張子を抽出する方法は?

    os.path.splitextメソッドを使用して、ファイル名文字列のファイル拡張子を抽出できます。パス名パスをペア(root、ext)に分割し、root + ext ==pathであり、extが空であるか、ピリオドで始まり、最大で1つのピリオドを含むようにします。 例 import os file_name = 'my_file.txt' print(os.path.splitext(file_name)) 出力 出力が表示されます- ('my_file', '.txt')

  2. 6 つの方法で Windows 11 を修復する方法

    Windows 11 にアップグレードした後、何か問題が発生していますか? Windows 11 を修復する方法をお探しですか?あなたは正しい場所に来ました! システム クラッシュ、応答しないアプリ、またはデバイスの動作が通常よりも遅いなどの問題が発生した場合は、いくつかのトラブルシューティング ハックを使用して PC を修復し、すぐにマシンを再稼働させることができます。 この投稿では、デバイスのパフォーマンスを最適化し、エラーやバグを回避するために Windows 11 を修復するために使用できる 6 つの異なる方法をリストしました。 始めましょう。 Windows 11 の修復方