• linq中使用case when


    select中使用case when
    linq代码:

    Products.Select(P => new
    {
      ID = P.ProductID,
      Name = P.Name,
      Color = P.Color,
      Price = (P.Color == "Red" ? P.StandardCost : (P.Color == "Black" ? P.StandardCost + 10 : P.ListPrice))
    });

    sql原型:
    SELECT ProductID, Name, Color,
        CASE
          WHEN Color = 'Red' THEN StandardCost
          WHEN Color = 'Black' THEN StandardCost + 10
          ELSE ListPrice   
        END Price
    FROM SalesLT.Product
     
     
    where中使用case when
    linq代码:
    Products
    .Where(P => (P.Color == "Red" ? (P.StandardCost > 100) : (P.Color == "Black" ? P.ListPrice > 100 : P.ListPrice == P.StandardCost)))
    .Select(P => new
    {
      ID = P.ProductID,
      Name = P.Name,
      Color = P.Color,
      StandardCost = P.StandardCost,
      ListPrice = P.ListPrice
    });
    sql原型:
    SELECT ProductID, Name, Color, StandardCost, ListPrice
    FROM SalesLT.Product
    WHERE (
      (CASE
        WHEN Color = 'Red' THEN
          (CASE
            WHEN StandardCost > 100 THEN 1
            WHEN NOT (StandardCost > 100) THEN 0
            ELSE NULL
           END)
        WHEN Color = 'Black' THEN
          (CASE
            WHEN ListPrice > 100 THEN 1
            WHEN NOT (ListPrice > 100) THEN 0
            ELSE NULL
           END)
        ELSE
          (CASE
            WHEN ListPrice = StandardCost THEN 1
            WHEN NOT (ListPrice = StandardCost) THEN 0
            ELSE NULL
           END)
       END)) = 1
     
     
     
    group by中使用case when
    linq代码:
    Products.GroupBy(P => P.StandardCost > 1000? P.Color : P.SellStartDate.ToString())
     
    sql原型:
    -- Region Parameters
    DECLARE @p0 Decimal(8,4) = 1000
    -- EndRegion
    SELECT [t1].[value] AS [Key]
    FROM (
      SELECT
        (CASE
          WHEN [t0].[StandardCost] > @p0 THEN CONVERT(NVarChar(MAX),[t0].[Color])
          ELSE CONVERT(NVarChar(MAX),[t0].[SellStartDate])
         END) AS [value]
      FROM [SalesLT].[Product] AS [t0]
      ) AS [t1]
    GROUP BY [t1].[value]
    GO
  • 相关阅读:
    MongoDB 副本集搭建 & 副本集扩容
    MongoDB 部署 & 基础命令
    MyBatis常见面试题:#{}和${}的区别是什么?
    MyBatis常见面试题:说说MyBatis的工作原理
    Java四种引用类型回收时机介绍
    Java虚拟机之垃圾回收器
    Servlet中过滤器、监听器和拦截器的区别
    Java里一个线程两次调用start()方法会出现什么情况
    二叉树、二叉查找树、平衡树和红黑树概念及其性质
    转:基于Redis实现延时队列
  • 原文地址:https://www.cnblogs.com/xjt360/p/5279504.html
Copyright © 2020-2023  润新知