首页 > 后端开发 > C++ > 如何将 SQL CASE 语句转换为 LINQ?

如何将 SQL CASE 语句转换为 LINQ?

Mary-Kate Olsen
发布: 2025-01-03 11:41:40
原创
326 人浏览过

How Can I Convert SQL CASE Statements to LINQ?

LINQ CASE 语句:深入探究

在 LINQ(语言集成查询)中,CASE 语句提供了一种方便的方法来评估多个条件和根据这些条件返回不同的值。要将提供的 CASE 语句转换为 LINQ,可以利用三元条件运算符或 lambda 表达式来实现类似的功能。

考虑以下示例:

// Original CASE statement
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  
登录后复制

要将其转换为 LINQ,我们可以使用三元条件运算符:

var newQuantity = (itempromoflag != 'N') ? 100000 :
    ((itemcat1 == '1' || itemcat1 == '2' || itemcat1 == '31') && itemsalestatus == 'S') ? 100000 :
    (itemsalestatus == 'O') ? 0 :
    cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted;
登录后复制

或者,lambda 表达式可用于更多简洁表示:

var newQuantity = (itempromoflag != 'N') ? 100000 :
    ((itemcat1 == '1' || itemcat1 == '2' || itemcat1 == '31') && itemsalestatus == 'S') ? 100000 :
    (itemsalestatus == 'O') ? 0 :
    () => cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted;
登录后复制

在这些示例中,三元运算符和 lambda 表达式执行类似的条件检查,并根据满足的条件返回适当的值。

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

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