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!