首页 > 数据库 > mysql教程 > 如何有效地将SQL CASE语句转换为LINQ查询?

如何有效地将SQL CASE语句转换为LINQ查询?

Susan Sarandon
发布: 2025-01-11 19:11:41
原创
751 人浏览过

How Can I Effectively Translate SQL CASE Statements into LINQ Queries?

将 SQL CASE 语句转换为 LINQ:实用指南

本文解决了将 SQL CASE 语句转换为其 LINQ 等效语句的挑战。 用户寻求帮助来翻译以下 SQL 片段:

<code class="language-sql">osc_products.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>
登录后复制

提供的初始 LINQ 尝试不足:

<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext();
  var query = from items in db.cdsItems
              where items.ItemHandHeldFlag.Equals("Y") && 
              items.ItemQtyOnHand -  items.ItemQtyCommitted > 0
  select items;</code>
登录后复制

该查询仅过滤数据;它没有实现 SQL CASE 语句的逻辑。

为了更清楚地说明 LINQ 的 CASE 语句等效项,让我们看一个更简单的示例:

<code class="language-csharp">Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 };

var numberText =
(
    from n in numbers
    where n > 0
    select new
    {
        Number = n,
        Text = 
        (
            n == 1 ? "One" :
            n == 2 ? "Two" :
            n == 3 ? "Three" : "Unknown"
        )
    }
);</code>
登录后复制

这演示了如何使用三元条件运算符 (?:) 来模拟 CASE 语句的行为。 条件按顺序进行评估,为每次匹配返回适当的值。结果是一系列匿名对象,每个对象都包含一个数字及其文本表示形式。 将此原则应用于原始 SQL CASE 语句需要在 LINQ 查询中使用类似的嵌套条件方法,使其适应 db.cdsItems 中的特定数据结构和关系,并可能与其他表连接以访问 itempromoflagitemcat1itemsalestatus。 如果前面的条件都不满足,则 ELSE 条件将表示默认值。

以上是如何有效地将SQL CASE语句转换为LINQ查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

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