
在 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 条件且结果数量大于零的项目。 这有效地复制了 LINQ 框架内 SQL CASE 语句的行为。
以上是如何在 LINQ 中实现相当于条件产品数量分配的 SQL CASE 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!