首頁 > 資料庫 > mysql教程 > 如何在 LINQ 中實作相當於條件產品數量分配的 SQL CASE 語句?

如何在 LINQ 中實作相當於條件產品數量分配的 SQL CASE 語句?

Linda Hamilton
發布: 2025-01-11 19:22:42
原創
956 人瀏覽過

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

在 LINQ 中複製 SQL CASE 語句以進行動態產品數量分配

本文示範如何將 SQL CASE 語句的功能轉換為 LINQ,專門解決基於各種條件有條件分配產品數量的挑戰。 我們將修改現有程式碼以合併此邏輯。

初步計算:

cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted
登入後複製

這個簡單的減法透過從現有庫存中扣除承諾數量來確定可用庫存。

LINQ 中等效的 SQL CASE 語句使用巢狀三元運算子:

osc_products.products_quantity =
    itempromoflag != "N" ? 100000 :
    (
        itemcat1.In("1", "2", "31") && itemsalestatus == "S" ? 100000 :
        itemsalestatus == "O" ? 0 :
        cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted
    )
登入後複製

這個巢狀結構反映了 CASE 語句的條件邏輯。 它優先考慮條件:如果itempromoflag不為“N”,則數量為100000;否則,進入下一個條件,依此類推。

整合的 LINQ 查詢:

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;
登入後複製

此修訂後的查詢包含條件數量分配,確保根據定義的條件準確更新庫存狀態。 僅選擇滿足 ItemHandHeldFlag 條件且結果數量大於零的項目。 這有效地複製了 LINQ 框架內 SQL CASE 語句的行為。

以上是如何在 LINQ 中實作相當於條件產品數量分配的 SQL CASE 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板