ホームページ >データベース >mysql チュートリアル >データ更新のために LINQ クエリで SQL CASE ステートメントをレプリケートするにはどうすればよいですか?

データ更新のために LINQ クエリで SQL CASE ステートメントをレプリケートするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-11 19:27:43366ブラウズ

How Can I Replicate SQL CASE Statements in LINQ Queries for Data Updates?

条件付きデータ更新に対する LINQ のアプローチ

LINQ (言語統合クエリ) は、特にデータベース レコードを更新する場合に、SQL の CASE ステートメントの機能をミラーリングして、条件付きロジックを管理する効率的な方法を提供します。 これを実現する方法を見てみましょう。

一般的なシナリオには、複数の条件に基づいて列を更新することが含まれます。 次の SQL 例を考えてみましょう:

<code class="language-sql">UPDATE osc_products
SET 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>

この SQL ステートメントは、さまざまな基準に基づいて products_quantity を更新します。 同等の LINQ クエリは次のようになります:

<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext();
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag == "Y"
            let quantity =
                (
                    items.ItemPromoFlag != 'N' ? 100000 :
                    (items.ItemCat1.In("1", "2", "31") && items.ItemSaleStatus == "S") ? 100000 :
                    items.ItemSaleStatus == "O" ? 0 :
                    items.ItemQtyOnHand - items.ItemQtyCommitted
                )
            select new
            {
                ItemId = items.ItemId,
                UpdatedQuantity = quantity
            };</code>

この LINQ クエリは、let キーワードを使用して、条件付きロジックに基づいて計算された quantity を定義します。 三項演算子 (? :) は、CASE ステートメントの機能を実装する簡潔な方法を提供します。 最終的な選択には ItemId と計算された UpdatedQuantity が含まれており、効率的なデータベース更新が可能になります。

これは、複雑な条件付き更新を処理する際の LINQ の柔軟性を示しており、C# コード内で直接 SQL CASE ステートメントを使用する強力な代替手段を提供します。

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

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