Cara Melakukan Sambungan Luar Kiri – LINQ dalam C#

Cara Melakukan Sambungan Luar Kiri Linq Dalam C



Untuk memaparkan rekod padanan dari jadual kiri dan jadual kanan dalam SQL, cantuman luar kiri ialah sejenis operasi cantuman yang digunakan. Dalam LINQ, cantuman luar kiri boleh dilakukan menggunakan kaedah GroupJoin() dan SelectMany(), artikel ini akan membincangkan secara meluas melakukan cantuman luar kiri dalam LINQ menggunakan C#.

Cara Melakukan Sambungan Luar Kiri dalam LINQ Menggunakan C#

Untuk melakukan gabungan luar kiri dalam LINQ, anda boleh menggunakan kaedah GroupJoin() untuk menyertai dua jujukan berdasarkan kekunci biasa dan kemudian gunakan kaedah SelectMany() untuk meratakan hasilnya, berikut ialah contoh:







menggunakan Sistem;
menggunakan System.Linq;

Program kelas
{
lompang statik Utama ( )
{
var left = baru [ ] { 1 , 2 , 3 } ;
var right = baru [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
betul,
l = > l,
r = > r,
( l, r ) = > baru { Kiri = l, Kanan = r.DefaultIfEmpty ( ) } )
.PilihBanyak (
lr = > lr.Kanan.Pilih (
r = > baru { Kiri = lr.Kiri, Kanan = r } ) ) ;
untuk setiap ( item var dalam hasil )
{
Console.WriteLine ( '{0} {1}' , item.Kiri, item.Kanan ) ;
}
}
}



Kod ini melakukan gabungan luar kiri pada dua tatasusunan kiri dan kanan, dan mencetak hasilnya ke konsol. Kaedah GroupJoin() melaksanakan gabungan, dan SelectMany() kaedah digunakan untuk meratakan hasil. Akhirnya, hasilnya dicetak ke konsol menggunakan gelung foreach dan fungsi WriteLine():







Berikut ialah satu lagi contoh yang menunjukkan penggunaan melaksanakan penyertaan yang ditinggalkan dengan memaparkan nama pekerja masing-masing dan jabatan mereka yang berkaitan. Setiap pekerja adalah setiap jabatan telah diberikan nombor yang kemudiannya digunakan untuk memadankan jabatan berkaitan dengan pekerja masing-masing, berikut adalah kod lengkap untuknya:

menggunakan Sistem;
menggunakan System.Collections.Generic;
menggunakan System.Linq;

ruang nama YourNamespace
{
Program kelas
{
lompang statik Utama ( tali [ ] args )
{
Senaraikan < Nama Pekerja > pekerja = Senarai baru < Nama Pekerja >
{
Nama Pekerja baharu { Id = 1 , Nama = 'Sendiri' , JabatanId = 1 } ,
Nama Pekerja baharu { Id = 2 , Nama = 'John' , JabatanId = 2 } ,
Nama Pekerja baharu { Id = 3 , Nama = 'Kevin' , JabatanId = 2 } ,
Nama Pekerja baharu { Id = 4 , Nama = 'Bob' , JabatanId = 3 }
} ;

Senaraikan < Jabatan > jabatan = Senarai baru < Jabatan >
{
Jabatan baru { Id = 1 , Nama = 'Penulisan Kandungan' } ,
Jabatan baru { Id = 2 , Nama = 'Pemasaran' } ,
Jabatan baru { Id = 3 , Nama = 'Kejuruteraan' }
} ;

var query = dari nama pekerja dalam pekerja
sertai jabatan dalam jabatan
pada nama pekerja.DepartmentId sama dengan department.Id into departmentGroup
daripada jabatan dalam departmentGroup.DefaultIfEmpty ( )
pilih baru { Nama Pekerja = nama pekerja.Nama, Nama Jabatan = jabatan?.Nama ?? 'Tiada' } ;

untuk setiap ( adalah hasilnya dalam pertanyaan )
{
Console.WriteLine ( $ 'Nama Pekerja: {result.EmployeenameName}, Jabatan: {result.DepartmentName}' ) ;
}
}
}

kelas Nama Pekerja
{
Id int awam { dapatkan; ditetapkan ; }
rentetan awam Nama { dapatkan; ditetapkan ; }
id Jabatan int awam { dapatkan; ditetapkan ; }
}

Jabatan kelas
{
Id int awam { dapatkan; ditetapkan ; }
rentetan awam Nama { dapatkan; ditetapkan ; }
}
}



Mula-mula data sampel diberikan yang mengandungi nama pekerja dan nama jabatan dan selepas itu nombor masing-masing diberikan kepada setiap satu. Seterusnya operasi join dilakukan dengan menggunakan arahan join dan selepas itu hasilnya disimpan dalam variable bernama query, seterusnya gelung for digunakan untuk mencetak nama dan jabatan pekerja masing-masing dan output kod akan menjadi seperti ini :

Kesimpulan

Cantuman luar kiri ialah operasi biasa dalam SQL, dan juga boleh dilakukan dengan mudah menggunakan LINQ dalam C#. Menggunakan kaedah GroupJoin() dan SelectMany(), anda boleh melakukan cantuman luar kiri pada dua jujukan berdasarkan kekunci biasa. Walaupun sintaks untuk melakukan sambung luar kiri dalam LINQ mungkin sukar difahami untuk pemula, ia adalah bahasa yang berkuasa dan fleksibel yang membolehkan pertanyaan kompleks dilakukan dengan mudah.