Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Gabungan Luar Kiri dengan Syarat Sertaan Berbilang dalam LINQ ke SQL?
LINQ ke SQL: Lakukan sambung luar kiri menggunakan berbilang syarat sambung
LINQ ke SQL membolehkan anda melakukan gabungan luar kiri menggunakan berbilang syarat cantum untuk mendapatkan semula data daripada berbilang jadual, termasuk baris dari jadual kiri walaupun tiada baris yang sepadan dalam jadual kanan.
Untuk melaksanakan sambung luar kiri dengan berbilang syarat sambung, anda perlu terlebih dahulu mewujudkan syarat sambung utama, yang biasanya merupakan hubungan antara kekunci utama jadual. Sebaik sahaja anda mempunyai penyertaan utama anda, anda boleh menambah syarat penyertaan tambahan untuk menapis keputusan selanjutnya.
Contoh pertanyaan SQL yang anda berikan:
<code class="language-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</code>
Tapis baris dalam jadual 'tempoh' berdasarkan 'companyid' dan dapatkan semula 'nilai' yang sepadan daripada jadual 'fakta' berdasarkan syarat gabungan 'id' dan 'otherid'.
Untuk menukar pertanyaan ini kepada LINQ, anda perlu menggunakan kaedah Join()
dan kaedah DefaultIfEmpty()
untuk mengendalikan cantuman luar. Pelaksanaan LINQ yang betul untuk pertanyaan SQL yang diberikan ialah:
<code class="language-csharp">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</code>Klausa
Where()
digunakan untuk menggunakan syarat penyertaan tambahan kepada otherid
. Kaedah DefaultIfEmpty()
memastikan baris dari jadual kiri disertakan walaupun tiada baris yang sepadan dalam jadual kanan.
Sebagai alternatif, anda boleh menggunakan subkueri:
<code class="language-csharp">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</code>
Kedua-dua kaedah menghasilkan hasil yang sama seperti pertanyaan SQL yang disediakan. Dengan mengikuti langkah-langkah ini, anda boleh melakukan gabungan luar kiri dengan cekap menggunakan berbilang syarat gabungan dalam LINQ ke SQL.
Atas ialah kandungan terperinci Bagaimana untuk 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!