首頁 >後端開發 >C++ >如何將 SQL CASE 語句轉換為 LINQ?

如何將 SQL CASE 語句轉換為 LINQ?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-03 11:41:40242瀏覽

How Can I Convert SQL CASE Statements to LINQ?

LINQ CASE 語句:深入探究

在LINQ(語言整合查詢)中,CASE 語句提供了一個方便的方法來評估多個條件和根據這些條件傳回不同的值。要將提供的 CASE 語句轉換為 LINQ,可以利用三元條件運算子或 lambda 表達式來實現類似的函數。

考慮以下範例:

// Original CASE statement
osc_products.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  

要將其轉換為LINQ,我們可以使用三元條件運算子:

var newQuantity = (itempromoflag != 'N') ? 100000 :
    ((itemcat1 == '1' || itemcat1 == '2' || itemcat1 == '31') && itemsalestatus == 'S') ? 100000 :
    (itemsalestatus == 'O') ? 0 :
    cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted;

或者,lambda 表達式可用於更多簡潔表示:

var newQuantity = (itempromoflag != 'N') ? 100000 :
    ((itemcat1 == '1' || itemcat1 == '2' || itemcat1 == '31') && itemsalestatus == 'S') ? 100000 :
    (itemsalestatus == 'O') ? 0 :
    () => cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted;

在這些範例中,三元運算子和lambda 表達式執行類似的條件檢查,並根據滿足的條件傳回適當的值。

以上是如何將 SQL CASE 語句轉換為 LINQ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn