Cara Melakukan Left Outer Joins – LINQ di C#

Cara Melakukan Left Outer Joins Linq Di C



Untuk menampilkan catatan yang cocok dari tabel kiri dan tabel kanan di SQL, gabungan luar kiri adalah jenis operasi gabungan yang digunakan. Di LINQ, left outer join dapat dilakukan dengan menggunakan metode GroupJoin() dan SelectMany(), artikel ini akan membahas secara ekstensif melakukan left outer join di LINQ menggunakan C#.

Cara Melakukan Left Outer Join di LINQ Menggunakan C#

Untuk melakukan join luar kiri di LINQ, Anda dapat menggunakan metode GroupJoin() untuk menggabungkan dua urutan berdasarkan kunci umum dan kemudian menggunakan metode SelectMany() untuk meratakan hasilnya, berikut contohnya:







menggunakan Sistem;
menggunakan System.Linq;

Program kelas
{
kekosongan statis Utama ( )
{
var kiri = baru [ ] { 1 , 2 , 3 } ;
var kanan = baru [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
Kanan,
saya = > saya,
r = > R,
( aku, r ) = > baru { Kiri = l, Kanan = r.DefaultIfEmpty ( ) } )
.Pilih Banyak (
lr = > lr.Kanan.Pilih (
r = > baru { Kiri = lr.Kiri, Kanan = r } ) ) ;
untuk setiap ( item var di dalam hasil )
{
Console.WriteLine ( '{0} {1}' , butir.Kiri, butir.Kanan ) ;
}
}
}



Kode ini melakukan gabungan luar kiri pada dua larik kiri dan kanan, dan mencetak hasilnya ke konsol. Metode GroupJoin() melakukan penggabungan, dan Pilih Banyak() metode yang digunakan untuk meratakan hasil. Terakhir, hasilnya dicetak ke konsol menggunakan foreach loop dan fungsi WriteLine() :







Berikut adalah contoh lain yang menunjukkan penggunaan melakukan left out joins dengan menampilkan masing-masing nama karyawan dan departemen terkait. Setiap karyawan setiap departemen telah diberi nomor yang kemudian digunakan untuk mencocokkan departemen terkait dengan karyawan masing-masing, berikut kode lengkapnya:

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

namespace YourNamespace
{
Program kelas
{
kekosongan statis Utama ( rangkaian [ ] argumen )
{
Daftar < Nama karyawan > karyawan = Daftar baru < Nama karyawan >
{
nama Karyawan baru { id = 1 , Nama = 'Diri' , DepartemenId = 1 } ,
nama Karyawan baru { id = 2 , Nama = 'Yohanes' , DepartemenId = 2 } ,
nama Karyawan baru { id = 3 , Nama = 'Kevin' , DepartemenId = 2 } ,
nama Karyawan baru { id = 4 , Nama = 'Bob' , DepartemenId = 3 }
} ;

Daftar < Departemen > departemen = Daftar baru < Departemen >
{
Departemen baru { id = 1 , Nama = 'Penulisan Konten' } ,
Departemen baru { id = 2 , Nama = 'Pemasaran' } ,
Departemen baru { id = 3 , Nama = 'Rekayasa' }
} ;

var kueri = dari nama karyawan di dalam karyawan
bergabung departemen di dalam departemen
pada employeename.DepartmentId sama dengan department.Id ke departmentGroup
dari departemen di dalam departmentGroup.DefaultIfEmpty ( )
Pilih baru { NamaPegawai = NamaPekerja.Nama, NamaDepartemen = Departemen?.Nama ?? 'Tidak ada' } ;

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

nama karyawan kelas
{
id int publik { mendapatkan; mengatur ; }
Nama string publik { mendapatkan; mengatur ; }
id departemen publik int { mendapatkan; mengatur ; }
}

jurusan kelas
{
id int publik { mendapatkan; mengatur ; }
Nama string publik { mendapatkan; mengatur ; }
}
}



Pertama-tama diberikan data sampel yang berisi nama karyawan dan nama departemen dan kemudian diberi nomor masing-masing. Selanjutnya operasi join dilakukan dengan menggunakan perintah join dan setelah itu hasilnya disimpan dalam variabel bernama query, selanjutnya for loop digunakan untuk mencetak nama dan departemen masing-masing pegawai dan keluaran kodenya akan seperti ini :

Kesimpulan

Gabungan luar kiri adalah operasi umum di SQL, dan juga dapat dilakukan dengan mudah menggunakan LINQ di C#. Menggunakan metode GroupJoin() dan SelectMany() , Anda dapat melakukan gabungan luar kiri pada dua urutan berdasarkan kunci umum. Meskipun sintaks untuk melakukan gabungan luar kiri di LINQ mungkin sulit dipahami untuk pemula, ini adalah bahasa yang kuat dan fleksibel yang memungkinkan kueri kompleks dilakukan dengan mudah.