首頁 > 資料庫 > mysql教程 > 如何有效地將SQL CASE語句轉換為LINQ查詢?

如何有效地將SQL CASE語句轉換為LINQ查詢?

Susan Sarandon
發布: 2025-01-11 19:11:41
原創
793 人瀏覽過

How Can I Effectively Translate SQL CASE Statements into LINQ Queries?

將 SQL CASE 語句轉換為 LINQ:實用指南

本文解決了將 SQL CASE 語句轉換為其 LINQ 等效語句的挑戰。 使用者尋求協助來翻譯以下 SQL 片段:

<code class="language-sql">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  </code>
登入後複製

提供的初始 LINQ 嘗試不足:

<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext();
  var query = from items in db.cdsItems
              where items.ItemHandHeldFlag.Equals("Y") && 
              items.ItemQtyOnHand -  items.ItemQtyCommitted > 0
  select items;</code>
登入後複製

此查詢僅過濾資料;它沒有實作 SQL CASE 語句的邏輯。

為了更清楚地說明 LINQ 的 CASE 語句等效項,讓我們來看一個更簡單的範例:

<code class="language-csharp">Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 };

var numberText =
(
    from n in numbers
    where n > 0
    select new
    {
        Number = n,
        Text = 
        (
            n == 1 ? "One" :
            n == 2 ? "Two" :
            n == 3 ? "Three" : "Unknown"
        )
    }
);</code>
登入後複製

這示範如何使用三元條件運算子 (?:) 來模擬 CASE 語句的行為。 條件按順序進行評估,為每次匹配返回適當的值。結果是一系列匿名對象,每個對像都包含一個數字及其文字表示。 將此原則應用於原始SQL CASE 語句需要在LINQ 查詢中使用類似的巢狀條件方法,使其適應db.cdsItems 中的特定資料結構和關係,並可能與其他資料表連接以存取itempromoflagitemcat1itemsalestatus。 如果前面的條件都不滿足,則 ELSE 條件將表示預設值。

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

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