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
Linda Hamiltonasal
2025-01-11 19:22:42932semak imbas

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>

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>

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>

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!

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