Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Meniru Penyata SQL CASE dalam Pertanyaan LINQ untuk Kemas Kini Data?

Bagaimanakah Saya Boleh Meniru Penyata SQL CASE dalam Pertanyaan LINQ untuk Kemas Kini Data?

Susan Sarandon
Lepaskan: 2025-01-11 19:27:43
asal
362 orang telah melayarinya

How Can I Replicate SQL CASE Statements in LINQ Queries for Data Updates?

Pendekatan LINQ untuk Kemas Kini Data Bersyarat

LINQ (Language Integrated Query) menyediakan cara yang cekap untuk mengurus logik bersyarat, mencerminkan kefungsian pernyataan CASE SQL, terutamanya apabila mengemas kini rekod pangkalan data. Mari kita periksa bagaimana untuk mencapai ini.

Senario biasa melibatkan pengemaskinian lajur berdasarkan berbilang syarat. Pertimbangkan contoh SQL ini:

<code class="language-sql">UPDATE osc_products
SET products_quantity =
    CASE 
        WHEN itempromoflag = 'N' THEN 100000
        WHEN itemcat1 IN ('1','2','31') AND itemsalestatus = 'S' THEN 100000
        WHEN itemsalestatus = 'O' THEN 0
        ELSE cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted 
    END</code>
Salin selepas log masuk

Pernyataan SQL ini mengemas kini products_quantity berdasarkan kriteria yang berbeza. Pertanyaan LINQ yang setara ialah:

<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext();
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag == "Y"
            let quantity =
                (
                    items.ItemPromoFlag != 'N' ? 100000 :
                    (items.ItemCat1.In("1", "2", "31") && items.ItemSaleStatus == "S") ? 100000 :
                    items.ItemSaleStatus == "O" ? 0 :
                    items.ItemQtyOnHand - items.ItemQtyCommitted
                )
            select new
            {
                ItemId = items.ItemId,
                UpdatedQuantity = quantity
            };</code>
Salin selepas log masuk

Pertanyaan LINQ ini menggunakan kata kunci let untuk mentakrifkan quantity yang dikira berdasarkan logik bersyarat. Pengendali ternary (? :) menyediakan cara ringkas untuk melaksanakan kefungsian pernyataan CASE. Pemilihan terakhir termasuk ItemId dan UpdatedQuantity yang dikira, membolehkan kemas kini pangkalan data yang cekap.

Ini mempamerkan fleksibiliti LINQ dalam mengendalikan kemas kini bersyarat yang kompleks, menyediakan alternatif yang berkuasa untuk mengarahkan pernyataan SQL CASE dalam kod C# anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meniru Penyata SQL CASE dalam Pertanyaan LINQ untuk Kemas Kini Data?. 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