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
Lepaskan: 2024-12-27 12:50:21
asal
279 orang telah melayarinya

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

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

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

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

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!

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