Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan LINQ ke SQL Left Outer Join dengan Pelbagai Syarat Sertai?
LINQ to SQL: Left Outer Join with Multiple Join Condition
Dalam LINQ to SQL, menterjemah pertanyaan SQL yang melibatkan gabungan luar kiri dengan berbilang gabungan keadaan boleh mencabar. Artikel ini menangani senario di mana pertanyaan SQL dengan gabungan luar kiri dan syarat gabungan tambahan perlu ditukar kepada LINQ.
SQL Query
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
Terjemahan LINQ
Pelaksanaan LINQ tipikal bagi gabungan luar kiri menggunakan DefaultIfEmpty() boleh menjadi mudah, tetapi memasukkan syarat gabungan tambahan memerlukan pertimbangan yang teliti.
Percubaan awal berikut, walaupun betul dari segi sintaksis, tidak menghasilkan 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.DefaultIfEmpty() where p.companyid == 100 && fgi.otherid == 17 select f.value
Untuk mencapai tingkah laku yang diingini, syarat gabungan tambahan mesti diperkenalkan sebelum memanggil DefaultIfEmpty(). Ini dicapai menggunakan sama ada sintaks kaedah sambungan atau subkueri:
Sintaks Kaedah Sambungan
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
Subquery
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
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan LINQ ke SQL Left Outer Join dengan Pelbagai Syarat Sertai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!