Mengendalikan IN Sub-Pertanyaan dalam LINQ ke SQL
Menggunakan IN sub-pertanyaan dalam LINQ ke SQL boleh menjadi cara yang cekap untuk mengaitkan data daripada berbilang jadual. Begini cara untuk mendekatinya:
Pelaksanaan Pertanyaan Umum IN:
Untuk melaksanakan pertanyaan IN dalam LINQ kepada SQL, ikut sintaks ini:
var q = from t1 in table1 let t2s = from t2 in table2 where <Conditions for table2> select t2.KeyField where t2s.Contains(t1.KeyField) select t1;
Contoh Khusus:
Jom lihat semula contoh pertanyaan SQL:
SELECT f.* FROM Foo f WHERE f.FooId IN ( SELECT fb.FooId FROM FooBar fb WHERE fb.BarId = 1000 )
Dalam LINQ ke SQL, ini akan diterjemahkan kepada:
var query = from f in db.Foo let fubars = from fb in db.FooBar where fb.BarId == 1000 select fb.FooId where fubars.Contains(f.FooId) select f;
Pertimbangan Tambahan:
Untuk Pertanyaan EXISTS, anda boleh menggunakan kaedah Any() dan bukannya Contains():
var q = from t1 in table1 let t2s = from t2 in table2 where <Conditions for table2> select t2.KeyField where t2s.Any(t1.KeyField) select t1;
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan IN Subqueries dengan Cekap dalam LINQ ke SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!