LINQ kepada SQL: Meningkatkan Cantuman Luar Kiri dengan Syarat Gabungan Berbilang
Dalam LINQ ke SQL, cantuman luar kiri menyediakan mekanisme yang berkuasa untuk menggabungkan data daripada berbilang jadual. Walau bagaimanapun, apabila berhadapan dengan senario yang melibatkan syarat gabungan tambahan, adalah perlu untuk meneroka teknik yang melanjutkan pendekatan standard.
Pertimbangkan pertanyaan SQL:
SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100
Pertanyaan ini bertujuan untuk mendapatkan data daripada jadual 'tempoh' dan 'fakta', menggunakan cantuman luar kiri pada lajur 'id' dan 'periodid'. Selain itu, ia termasuk syarat cantuman selanjutnya, 'f.otherid = 17', untuk menapis keputusan.
Dalam LINQ ke SQL, pelaksanaan tipikal cantuman luar kiri melibatkan penggunaan kaedah 'DefaultIfEmpty()' . Walau bagaimanapun, untuk menampung syarat gabungan tambahan, kami perlu mengubah suai pendekatan kami.
Pertanyaan LINQ berikut mencapai hasil yang diingini:
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty() where p.companyid == 100 select f.value
Di sini, kami memperkenalkan syarat gabungan tambahan dalam Klausa '.Where()', memastikan pemilihan baris daripada kumpulan 'fg' ditapis berdasarkan 'f.otherid = 17'.
Secara bergantian, kami boleh menggunakan subkueri:
from p in context.Periods join f in context.Facts on p.id equals f.periodid into fg from fgi in (from f in fg where f.otherid == 17 select f).DefaultIfEmpty() where p.companyid == 100 select f.value
Kedua-dua pendekatan berjaya melaksanakan sambung luar kiri sambil menggunakan syarat sambung tambahan, membolehkan pengambilan data yang lebih disasarkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Gabungan Luar Kiri dengan Syarat Sertaan Berbilang dalam LINQ ke SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!