在 LINQ 中複製 SQL CASE 語句以進行動態產品數量分配
本文示範如何將 SQL CASE 語句的功能轉換為 LINQ,專門解決基於各種條件有條件分配產品數量的挑戰。 我們將修改現有程式碼以合併此邏輯。
初步計算:
<code class="language-csharp">cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted</code>
這個簡單的減法透過從現有庫存中扣除承諾數量來確定可用庫存。
LINQ 中等效的 SQL CASE 語句使用巢狀三元運算子:
<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>
這個巢狀結構反映了 CASE 語句的條件邏輯。 它優先考慮條件:如果itempromoflag
不為“N”,則數量為100000;否則,進入下一個條件,依此類推。
整合的 LINQ 查詢:
<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>
此修訂後的查詢包含條件數量分配,確保根據定義的條件準確更新庫存狀態。 僅選擇滿足 ItemHandHeldFlag
條件且結果數量大於零的項目。 這有效地複製了 LINQ 框架內 SQL CASE 語句的行為。
以上是如何在 LINQ 中實作相當於條件產品數量分配的 SQL CASE 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!