Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan IN Subqueries dengan Cekap dalam LINQ ke SQL?

Bagaimana untuk Melaksanakan IN Subqueries dengan Cekap dalam LINQ ke SQL?

Susan Sarandon
Susan Sarandonasal
2024-12-27 12:50:21305semak imbas

How to Efficiently Implement IN Subqueries in LINQ to SQL?

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!

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