首页 > 数据库 > mysql教程 > 如何在 LINQ 中实现相当于条件产品数量分配的 SQL CASE 语句?

如何在 LINQ 中实现相当于条件产品数量分配的 SQL CASE 语句?

Linda Hamilton
发布: 2025-01-11 19:22:42
原创
891 人浏览过

How to Implement a SQL CASE Statement Equivalent in LINQ for Conditional Product Quantity Assignment?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板