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
Susan Sarandonasal
2025-01-11 19:27:43365semak imbas

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>

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>

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!

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