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 サイトの他の関連記事を参照してください。