ホームページ >データベース >mysql チュートリアル >データ更新のために LINQ クエリで SQL CASE ステートメントをレプリケートするにはどうすればよいですか?
条件付きデータ更新に対する 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 サイトの他の関連記事を参照してください。