Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Cách Sử Dụng Join Với LINQ Và Lambda Trong C#


Inner join chỉ trả về các bản ghi/ dòng khớp hoặc tồn tại trong cả hai bảng. Chúng ta cũng có thể áp dụng join trên nhiều bảng dựa trên điều kiện như hiển thị dưới. Sử dụng kiểu ẩn danh nếu cần join trên nhiều điều kiện.

Trong ví dụ dưới, chúng ta viết 2 cách có thể dùng để join trong LINQ. Ở đây Department và Employee được join.

Ví Dụ

class Program{ 
    static void Main(string[] args){ 
        var result = 
        Employee.GetAllEmployees().Join(Department.GetAllDepartments(), 
        e => e.DepartmentID, 
        d => d.ID, (employee, department) => new{ 
            EmployeeName = employee.Name, 
            DepartmentName = department.Name 
        }); 
        foreach (var employee in result){ 
            Console.WriteLine(employee.EmployeeName + "\t" + 
            employee.DepartmentName); 
        } 
        var result1 = from e in Employee.GetAllEmployees() 
        join d in Department.GetAllDepartments() 
        on e.DepartmentID equals d.ID 
        select new{ 
            EmployeeName = e.Name, 
            DepartmentName = d.Name 
        }; 
        foreach (var employee in result1){ 
            Console.WriteLine(employee.EmployeeName + "\t" + 
            employee.DepartmentName); 
        } 
        Console.ReadLine(); 
    } 
} 
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 = "A", DepartmentID = 1 }, 
            new Employee { ID = 2, Name = "B", DepartmentID = 2 }, 
            new Employee { ID = 3, Name = "B", DepartmentID = 1 }, 
            new Employee { ID = 4, Name = "V", DepartmentID = 1 }, 
            new Employee { ID = 5, Name = "F", DepartmentID = 2 }, 
            new Employee { ID = 6, Name = "R", DepartmentID = 2 }, 
            new Employee { ID = 7, Name = "TT", DepartmentID = 1 }, 
            new Employee { ID = 8, Name = "YY", DepartmentID = 1 }, 
            new Employee { ID = 9, Name = "WW", DepartmentID = 2 }, 
            new Employee { ID = 10, Name = "QQ"} 
        }; 
    } 
} 
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"}, 
            new Department { ID = 3, Name = "Contract"}, 
        }; 
    } 
}

Kết Quả

A IT 
B HR 
B IT 
V IT 
F HR 
R HR 
TT IT 
YY IT 
WW HR 
A IT 
B HR 
B IT 
V IT 
F HR 
R HR 
TT IT 
YY IT 
WW HR