复杂条件的 LINQ CASE 语句实现
CASE 语句是一个强大的工具,用于评估多个条件并根据每种情况返回特定结果。本文旨在为在 LINQ for C# 中实现 CASE 语句提供清晰的解释和解决方案。
在一个特定场景中,查询试图根据一组条件更新库存状态:
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
要将此 CASE 语句转换为 LINQ,我们可以采用以下语法:
query.Select(item => item.Products_Quantity = item.ItemPromoFlag != 'N' ? 100000 : (item.ItemCat1 == "1" || item.ItemCat1 == "2" || item.ItemCat1 == "31") && item.ItemSaleStatus == "S" ? 100000 : item.ItemSaleStatus == "O" ? 0 : cds_oeinvitem.ItemQtyOnHand - cds_oeinvitem.ItemQtyCommitted);
此 LINQ 表达式使用三元运算符来模拟 CASE 语句的条件并将相应的值设置为 Products_Quantity 属性。结果是一个根据指定条件更新库存状态的查询。
请注意,提供的代码片段假定您已经使用适当的数据源建立了 LINQ 查询。代码中的查询变量应代表您创建的 LINQ 查询。
以上是如何使用 C# 在 LINQ 中实现 SQL CASE 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!