首頁 > 資料庫 > mysql教程 > 如何在 LINQ 查詢中複製 SQL CASE 語句以進行資料更新?

如何在 LINQ 查詢中複製 SQL CASE 語句以進行資料更新?

Susan Sarandon
發布: 2025-01-11 19:27:43
原創
414 人瀏覽過

How Can I Replicate SQL CASE Statements in LINQ Queries for Data Updates?

LINQ 的條件資料更新方法

LINQ(語言整合查詢)提供了管理條件邏輯的有效方法,鏡像了 SQL CASE 語句的功能,特別是在更新資料庫記錄時。 讓我們來看看如何實現這一目標。

一個常見的場景涉及根據多個條件更新列。 考慮這個 SQL 範例:

<code class="language-sql">UPDATE osc_products
SET products_quantity =
    CASE 
        WHEN itempromoflag = 'N' THEN 100000
        WHEN itemcat1 IN ('1','2','31') AND itemsalestatus = 'S' THEN 100000
        WHEN itemsalestatus = 'O' THEN 0
        ELSE cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted 
    END</code>
登入後複製

此 SQL 語句根據不同的條件更新 products_quantity。 等效的 LINQ 查詢為:

<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext();
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag == "Y"
            let quantity =
                (
                    items.ItemPromoFlag != 'N' ? 100000 :
                    (items.ItemCat1.In("1", "2", "31") && items.ItemSaleStatus == "S") ? 100000 :
                    items.ItemSaleStatus == "O" ? 0 :
                    items.ItemQtyOnHand - items.ItemQtyCommitted
                )
            select new
            {
                ItemId = items.ItemId,
                UpdatedQuantity = quantity
            };</code>
登入後複製

此 LINQ 查詢使用 let 關鍵字定義基於條件邏輯的計算 quantity。 三元運算子 (? :) 提供了一個簡潔的方法來實現 CASE 語句的功能。 最終選擇包括ItemId和計算出的UpdatedQuantity,從而實現高效的資料庫更新。

這展示了 LINQ 在處理複雜條件更新方面的靈活性,為 C# 程式碼中直接 SQL CASE 語句提供了強大的替代方案。

以上是如何在 LINQ 查詢中複製 SQL CASE 語句以進行資料更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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