Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Gabungan Luar Kiri dengan Syarat Sertaan Berbilang dalam LINQ ke SQL?

Bagaimana untuk Melakukan Gabungan Luar Kiri dengan Syarat Sertaan Berbilang dalam LINQ ke SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-12 06:14:47402semak imbas

How to Perform a Left Outer Join with Multiple Join Conditions in LINQ to 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn