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中文網其他相關文章!