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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-03 11:41:40242浏览

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