Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menerjemahkan Subqueries IN SQL ke dalam LINQ kepada SQL?

Bagaimana untuk Menerjemahkan Subqueries IN SQL ke dalam LINQ kepada SQL?

Linda Hamilton
Lepaskan: 2024-12-28 18:39:14
asal
456 orang telah melayarinya

How to Translate SQL's IN Subqueries into LINQ to SQL?

Mengendalikan IN Sub-Pertanyaan dengan LINQ ke SQL

Dalam LINQ ke SQL, anda mungkin menghadapi keperluan untuk mengendalikan IN sub-pertanyaan, operasi biasa dalam SQL. Mari kita pertimbangkan senario:

Soalan:

Bagaimanakah kita boleh menterjemahkan pertanyaan SQL berikut ke dalam LINQ kepada SQL?

SELECT f.*
FROM Foo f
WHERE f.FooId IN (
    SELECT fb.FooId
    FROM FooBar fb
    WHERE fb.BarId = 1000
)
Salin selepas log masuk

Jawapan:

Untuk melaksanakan pertanyaan sedemikian dalam LINQ kepada SQL, kita perlu menggunakan dua konsep:

1. Sub-pertanyaan sebagai Koleksi Kunci:

Kami mulakan dengan mentakrifkan sub-pertanyaan sebagai koleksi kunci yang memenuhi syarat dalam klausa IN.

var fooBarIds = from fb in context.FooBar
                where fb.BarId == 1000
                select fb.FooId;
Salin selepas log masuk

2. Pertanyaan dengan Kaedah Mengandungi:

Seterusnya, kita boleh menggunakan kaedah Mengandungi pada koleksi kunci untuk menyemak sama ada FooId yang diberikan ada.

var result = from f in context.Foo
             where fooBarIds.Contains(f.FooId)
             select f;
Salin selepas log masuk

Pertanyaan ini akan mengembalikan semua baris daripada jadual Foo di mana FooId wujud dalam koleksi FooId yang diambil daripada sub-pertanyaan.

Kes Penggunaan Lanjutan:

Prinsip yang sama boleh digunakan untuk melaksanakan operasi sub-pertanyaan lain, seperti EXISTS:

// EXISTS
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 Menerjemahkan Subqueries IN SQL ke dalam LINQ kepada 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