動的な製品数量割り当てのための LINQ での SQL CASE ステートメントのレプリケート
この記事では、SQL CASE ステートメントの機能を LINQ に変換する方法を示し、特に、さまざまな基準に基づいて製品数量を条件付きで割り当てるという課題に対処します。 このロジックを組み込むために既存のコードを変更します。
最初の計算:
<code class="language-csharp">cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted</code>
この単純な減算により、手持在庫から確定数量を差し引くことで、利用可能な在庫が決定されます。
LINQ で同等の SQL CASE ステートメントは、ネストされた三項演算子を使用します。
<code class="language-csharp">osc_products.products_quantity = itempromoflag != "N" ? 100000 : ( itemcat1.In("1", "2", "31") && itemsalestatus == "S" ? 100000 : itemsalestatus == "O" ? 0 : cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted )</code>
このネストされた構造は、CASE ステートメントの条件ロジックを反映しています。 条件を優先します。itempromoflag
が "N" でない場合、数量は 100000 です。それ以外の場合は、次の条件に進みます。
統合された LINQ クエリ:
<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext(); var query = from items in db.cdsItems where items.ItemHandHeldFlag == "Y" && ( items.Itempromoflag != "N" ? 100000 : ( items.Itemcat1.In("1", "2", "31") && items.Itemsalestatus == "S" ? 100000 : items.Itemsalestatus == "O" ? 0 : items.Itemqtyonhand - items.Itemqtycommitted ) ) > 0 select items;</code>
この改訂されたクエリには条件付き数量割り当てが組み込まれており、定義された基準に基づいて在庫状況が正確に更新されることが保証されます。 ItemHandHeldFlag
条件を満たし、結果の数量が 0 より大きい品目のみが選択されます。 これにより、LINQ フレームワーク内の SQL CASE ステートメントの動作が効果的に複製されます。
以上が条件付き製品数量割り当てのために、LINQ に相当する SQL CASE ステートメントを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。