Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melaksanakan Pernyataan SQL CASE Setara dalam LINQ untuk Tugasan Kuantiti Produk Bersyarat?

Bagaimana untuk Melaksanakan Pernyataan SQL CASE Setara dalam LINQ untuk Tugasan Kuantiti Produk Bersyarat?

Linda Hamilton
Lepaskan: 2025-01-11 19:22:42
asal
888 orang telah melayarinya

How to Implement a SQL CASE Statement Equivalent in LINQ for Conditional Product Quantity Assignment?

Menerap Penyata SQL CASE dalam LINQ untuk Peruntukan Kuantiti Produk Dinamik

Artikel ini menunjukkan cara menterjemahkan kefungsian pernyataan SQL CASE ke dalam LINQ, khususnya menangani cabaran menetapkan kuantiti produk secara bersyarat berdasarkan pelbagai kriteria. Kami akan mengubah suai kod sedia ada untuk menggabungkan logik ini.

Pengiraan awal:

<code class="language-csharp">cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted</code>
Salin selepas log masuk

Penolakan mudah ini menentukan inventori yang tersedia dengan menolak kuantiti komited daripada stok di tangan.

Pernyataan SQL CASE yang setara dalam LINQ menggunakan pengendali ternary bersarang:

<code class="language-csharp">osc_products.products_quantity =
    itempromoflag != "N" ? 100000 :
    (
        itemcat1.In("1", "2", "31") && itemsalestatus == "S" ? 100000 :
        itemsalestatus == "O" ? 0 :
        cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted
    )</code>
Salin selepas log masuk

Struktur bersarang ini mencerminkan logik bersyarat bagi pernyataan CASE. Ia mengutamakan syarat: jika itempromoflag bukan "N", kuantitinya ialah 100000; jika tidak, ia meneruskan ke syarat seterusnya, dan seterusnya.

Pertanyaan LINQ bersepadu:

<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext();
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag == "Y" &&
                  (
                      items.Itempromoflag != "N" ? 100000 :
                      (
                          items.Itemcat1.In("1", "2", "31") && items.Itemsalestatus == "S" ? 100000 :
                          items.Itemsalestatus == "O" ? 0 :
                          items.Itemqtyonhand - items.Itemqtycommitted
                      )
                  ) > 0
            select items;</code>
Salin selepas log masuk

Pertanyaan yang disemak ini menggabungkan penetapan kuantiti bersyarat, memastikan status stok dikemas kini dengan tepat berdasarkan kriteria yang ditetapkan. Hanya item yang memenuhi syarat ItemHandHeldFlag dan menghasilkan kuantiti yang lebih besar daripada sifar dipilih. Ini secara berkesan mereplikasi gelagat pernyataan SQL CASE dalam rangka kerja LINQ.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pernyataan SQL CASE Setara dalam LINQ untuk Tugasan Kuantiti Produk Bersyarat?. 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