ホームページ >バックエンド開発 >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 に変換するには、三項条件演算子またはラムダ式を利用して同様の機能を実現できます。

次の例を考えてみましょう。

// 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;

または、ラムダ式を使用できます。より簡潔に表現するには:

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

これらの例では、三項演算子とラムダ式が同様の条件チェックを実行し、満たされた条件に基づいて適切な値を返します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。