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
Lepaskan: 2025-01-12 06:14:47
asal
405 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk
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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan