LINQ 中的 Case 语句:一个实际示例
LINQ 强大的 CASE 语句为查询中的条件评估提供了简洁的语法。考虑以下在 LINQ 中更新库存状态的要求:
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 中,此 CASE 语句可以编写如下:
var query = from items in db.cdsItems where items.ItemHandHeldFlag.Equals("Y") & items.ItemQtyOnHand - items.ItemQtyCommitted > 0 select new { Quantity = items.ItemPromoflag != "N" ? 100000 : items.Itemcat1 == "1" || items.Itemcat1 == "2" || items.Itemcat1 == "31" && items.Itemsalestatus == "S" ? 100000 : items.Itemsalestatus == "O" ? 0 : items.Itemqtyonhand - items.Itemqtycommitted };
此查询有效地评估 CASE 语句条件并为匿名类型的 Quantity 属性分配适当的值。
请记住,整个 LINQ 语句处理其他条件,例如作为 ItemHandHeldFlag 和可用性条件。
以上是LINQ 的三元运算符如何复制 SQL 的 CASE 语句以进行条件数量更新?的详细内容。更多信息请关注PHP中文网其他相关文章!