LINQ to SQL: Melaksanakan Left Outer Join with Multiple Join Condition
LINQ to SQL membenarkan penciptaan pertanyaan kompleks menggunakan C# sintaks. Satu tugas biasa ialah melaksanakan cantuman luar kiri dengan berbilang syarat cantum.
Untuk memahami keperluan memasukkan syarat cantum dalam pernyataan JOIN dan bukannya klausa WHERE, pertimbangkan pernyataan SQL berikut:
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
Di sini, walaupun jadual fakta (f) tidak mempunyai baris yang sepadan dengan tempoh tertentu, kami masih mahu tempoh itu dimasukkan dalam keputusan. Meletakkan syarat cantum tambahan dalam klausa WHERE akan menghilangkan tempoh sedemikian daripada hasil.
LINQ kepada penyelesaian SQL melibatkan penggunaan sintaks kaedah sambungan. Coretan kod berikut menunjukkan cara:
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
Sebagai alternatif, anda 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
Dengan meletakkan syarat sertai dalam penyata JOIN, kami memastikan bahawa hanya titik dengan fakta sepadan yang memenuhi syarat otherid = 17 disertakan dalam keputusan, sambil masih melakukan sambung luar kiri. Pendekatan ini membolehkan kita mencapai tingkah laku yang diingini tanpa mengorbankan faedah gabungan luar kiri.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Gabungan Luar Kiri dengan Syarat Sertaan Berbilang dalam LINQ ke SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!