Cách thực hiện các phép nối ngoài bên trái – LINQ trong C#

Cach Thuc Hien Cac Phep Noi Ngoai Ben Trai Linq Trong C



Để hiển thị các bản ghi phù hợp từ bảng bên trái và bảng bên phải trong SQL, phép nối ngoài bên trái là một loại thao tác nối được sử dụng. Trong LINQ, phép nối ngoài bên trái có thể được thực hiện bằng cách sử dụng các phương thức GroupJoin() và SelectMany(), bài viết này sẽ thảo luận rộng rãi về việc thực hiện phép nối ngoài bên trái trong LINQ bằng C#.

Cách thực hiện các phép nối ngoài bên trái trong LINQ bằng C#

Để thực hiện nối ngoài bên trái trong LINQ, bạn có thể sử dụng phương thức GroupJoin() để nối hai chuỗi dựa trên một khóa chung và sau đó sử dụng phương thức SelectMany() để làm phẳng kết quả, đây là một ví dụ:







sử dụng Hệ thống;
sử dụng System.Linq;

chương trình lớp học
{
khoảng trống tĩnh Chính ( )
{
var trái = mới [ ] { 1 , 2 , 3 } ;
var phải = mới [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
Phải,
tôi = > tôi,
r = > r,
( tôi, r ) = > mới { Trái = l, Phải = r.DefaultIfEmpty ( ) } )
.SelectMany (
lr = > lr.Right.Select (
r = > mới { Trái = lr. Trái, Phải = r } ) ) ;
cho mỗi ( mục var TRONG kết quả )
{
Console.WriteLine ( '{0} {1}' , item.Left, item.Right ) ;
}
}
}



Mã này thực hiện phép nối ngoài bên trái trên hai mảng trái và phải và in kết quả ra bàn điều khiển. Phương thức GroupJoin() thực hiện phép nối và SelectMany() phương pháp được sử dụng để làm phẳng kết quả. Cuối cùng, kết quả được in ra bàn điều khiển bằng vòng lặp foreach và hàm WriteLine():







Dưới đây là một ví dụ khác thể hiện việc sử dụng thực hiện các phép nối bị bỏ sót bằng cách hiển thị tên nhân viên tương ứng và các phòng ban liên quan của họ. Mỗi nhân viên là mỗi bộ phận đã được chỉ định một số, sau đó được sử dụng để khớp bộ phận có liên quan với nhân viên tương ứng, đây là mã hoàn chỉnh cho nó:

sử dụng Hệ thống;
sử dụng System.Collections.Generic;
sử dụng System.Linq;

không gian tên YourNamespace
{
chương trình lớp học
{
khoảng trống tĩnh chính ( sợi dây [ ] tranh luận )
{
Danh sách < Tên nhân viên > nhân viên = Danh sách mới < Tên nhân viên >
{
tên nhân viên mới { ID = 1 , Tên = 'Bản thân anh ấy' , SởId = 1 } ,
tên nhân viên mới { ID = 2 , Tên = 'John' , SởId = 2 } ,
tên nhân viên mới { ID = 3 , Tên = 'Kevin' , SởId = 2 } ,
tên nhân viên mới { ID = 4 , Tên = 'bốp' , SởId = 3 }
} ;

Danh sách < Phòng > phòng ban = Danh sách mới < Phòng >
{
khoa mới { ID = 1 , Tên = 'Viết nội dung' } ,
khoa mới { ID = 2 , Tên = 'Tiếp thị' } ,
khoa mới { ID = 3 , Tên = 'Kỹ thuật' }
} ;

truy vấn var = từ tên nhân viên TRONG người lao động
tham gia phòng TRONG phòng ban
trên tên nhân viên.Bộ phậnId bằng bộ phận.Id vào bộ phậnNhóm
từ bộ phận TRONG bộ phậnGroup.DefaultIfEmpty ( )
lựa chọn mới { Tên nhân viên = tên nhân viên.Tên, Tên bộ phận = bộ phận?.Tên?? 'Không có' } ;

cho mỗi ( là kết quả TRONG truy vấn )
{
Console.WriteLine ( $ 'Employeename: {result.EmployeenameName}, Bộ phận: {result. DepartmentName}' ) ;
}
}
}

lớp tên nhân viên
{
Id int công khai { lấy; bộ ; }
Tên chuỗi công khai { lấy; bộ ; }
public int DepartmentId { lấy; bộ ; }
}

lớp học
{
Id int công khai { lấy; bộ ; }
Tên chuỗi công khai { lấy; bộ ; }
}
}



Đầu tiên, một dữ liệu mẫu được cung cấp có chứa tên nhân viên và tên của các phòng ban, sau đó một số tương ứng được cung cấp cho mỗi người. Tiếp theo, thao tác nối được thực hiện bằng cách sử dụng lệnh nối và sau đó kết quả được lưu trong một truy vấn có tên biến, tiếp theo vòng lặp for được sử dụng để in tên và phòng ban của các nhân viên tương ứng và đầu ra của mã sẽ như thế này :

Phần kết luận

Nối ngoài trái là một thao tác phổ biến trong SQL và cũng có thể được thực hiện dễ dàng bằng LINQ trong C#. Sử dụng các phương thức GroupJoin() và SelectMany(), bạn có thể thực hiện các phép nối ngoài bên trái trên hai chuỗi dựa trên một khóa chung. Mặc dù cú pháp để thực hiện các phép nối ngoài bên trái trong LINQ có thể khó hiểu đối với người mới bắt đầu, nhưng đây là một ngôn ngữ mạnh mẽ và linh hoạt cho phép thực hiện các truy vấn phức tạp một cách dễ dàng.