ホームページ > データベース > mysql チュートリアル > SQL CASE ステートメントを LINQ クエリに変換するにはどうすればよいですか?

SQL CASE ステートメントを LINQ クエリに変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-11 19:06:44
オリジナル
682 人が閲覧しました

How to Convert SQL CASE Statements to LINQ Queries?

LINQ の CASE ステートメント: 理解と実装

LINQ の CASE ステートメントを使用すると、開発者は複数の条件を評価し、結果に基づいて特定の値を割り当てることができます。これらは一般に、データの変換と操作に使用されます。

複雑な CASE ステートメントを LINQ に変換します

元の質問で提供された CASE ステートメントを考えてみましょう:

<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>
ログイン後にコピー

このステートメントは、さまざまな条件に基づいて、osc_products テーブルの products_quantity フィールドに特定の値を割り当てます。 LINQ に変換するには、次の構文を使用できます:

<code class="language-csharp">var productsQuantity = 
    osc_products
    .Select(x => new
    {
        x.products_quantity,
        ItemPromoFlag = x.itempromoflag != "N",
        ItemCategory1 = new[] { "1", "2", "31" }.Contains(x.itemcat1),
        ItemSaleStatus = x.itemsalestatus == "S",
        AvailableQuantity = x.itemqtyonhand - x.itemqtycommitted
    })
    .Select(x => x.products_quantity = 
        x.ItemPromoFlag ? 100000 :
        (x.ItemCategory1 && x.ItemSaleStatus) ? 100000 :
        x.itemsalestatus == "O" ? 0 :
        x.AvailableQuantity
    );</code>
ログイン後にコピー

LINQ 変換について

この LINQ ステートメントは、既存の products_quantity フィールドと、条件式のブール値を保持する追加のプロパティを含む新しい匿名型を投影します。次に、ネストされた Select 操作を使用して、計算された products_quantity 値を条件付きで割り当てます。

簡単な CASE ステートメントの例

単純な CASE ステートメントを LINQ に変換するために提供されているコード例は、Select 句での 3 項式の使用を示しています。

<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>
ログイン後にコピー
このステートメントは、三項式を使用して、その値に基づいて異なるテキスト値を数値に割り当てます。三項式の構文は次のとおりです:

<code class="language-csharp">condition ? true_expression : false_expression</code>
ログイン後にコピー
これらの例は、CASE ステートメントを LINQ に変換する方法を示し、条件を評価してデータに値を割り当てるための簡潔で保守しやすい方法を提供します。

以上がSQL CASE ステートメントを LINQ クエリに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート