LINQ to SQL 实现 CASE WHEN THEN 语句
Ø 前言
没有什么特别的,只是觉得 LINQ 的功能其实还是蛮强大的,所以简单记录下,算是工作笔记吧,有可能还能帮助到其他同学呢^_^。
Ø 下面主要使用了 C# 三元运算符实现实现 SQL 中的 CASE WHEN THEN 语句。
1) C#
const string deliverDM = "派送宣传册", haveKPInfo = "获得KP信息", talkWithKP = "和KP沟通", trial = "产品试样", turnover = "下单成交";
var query = (from t1 in DataContext.CustomerVisitInfo
where t1.SaleUserId == salesUserId && (t1.VisitTime >= mbdt && t1.VisitTime <= medt)
group t1 by t1.VisitStatus into g1
select new
{
VisitStatusName = (
g1.Key == (int)VisitStates.DeliverDM ? deliverDM
: g1.Key == (int)VisitStates.HaveKPInfo ? haveKPInfo
: g1.Key == (int)VisitStates.TalkWithKP ? talkWithKP
: g1.Key == (int)VisitStates.Trial ? trial
: g1.Key == (int)VisitStates.Turnover ? turnover : "其他"),
CustomerCount = g1.Count()
}).ToList();
2) 生成SQL:
exec sp_executesql N'SELECT
[GroupBy1].[K1] AS [VisitStatus],
CASE WHEN (1 = [GroupBy1].[K1]) THEN N''派送宣传册'' WHEN (2 = [GroupBy1].[K1]) THEN N''获得KP信息'' WHEN (3 = [GroupBy1].[K1]) THEN N''和KP沟通'' WHEN (4 = [GroupBy1].[K1]) THEN N''产品试样'' WHEN (5 = [GroupBy1].[K1]) THEN N''下单成交'' ELSE N''其他'' END AS [C1],
[GroupBy1].[A1] AS [C2]
FROM ( SELECT
[Extent1].[VisitStatus] AS [K1],
COUNT(1) AS [A1]
FROM [dbo].[CustomerVisitInfo] AS [Extent1]
WHERE ([Extent1].[SaleUserId] = @p__linq__0) AND ([Extent1].[VisitTime] >= @p__linq__1) AND ([Extent1].[VisitTime] <= @p__linq__2)
GROUP BY [Extent1].[VisitStatus]
) AS [GroupBy1]',N'@p__linq__0 bigint,@p__linq__1 datetime2(7),@p__linq__2 datetime2(7)',@p__linq__0=131,@p__linq__1='2017-05-01 00:00:00',@p__linq__2='2017-05-31 23:59:59'
Ø 思考:以上示例 THEN 中只是输出了常量字符串,也可以尝试输出其他语句结果,例如:嵌套子查询等。
LINQ to SQL 实现 CASE WHEN THEN 语句的更多相关文章
- wcf+linq to sql中关联查询返回数据问题
前段时间准备采用wcf+nh框架开发sl程序,发现采用nh开发不适合我的中型.并且快速开发项目,所以综合考量了下,决定采用wcf+linq to sql . 但是此模式也有缺点,也是linq to s ...
- 年终巨献 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
- LINQ to SQL语句非常详细(原文来自于网络)
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
- LINQ to SQL 语句(2)之 Select/Distinct
LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和 Distinct 介绍 Se ...
- LINQ to SQL语句大全
LINQ to SQL语句大全 LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判 ...
- LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg (转)
Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...
- 【转】LINQ to SQL语句(1)之Where
Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形 ...
- LINQ体验(18)——LINQ to SQL语句之视图和继承支持
视图 我们使用视图和使用数据表类似,仅仅需将视图从"server资源管理器/数据库资源管理器"拖动到O/R 设计器上,自己主动能够创建基于这些视图的实体类.我们能够同操作数据表一样 ...
- 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
随机推荐
- mysql学习笔记一 —— 数据的增删改查
1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...
- MySQL分区管理
以下是我看MySQL官方文档的时候整理的笔记,仅作参考保留. RANGE,LIST分区管理 1:为未分区表创建分区 ; 2:删除某个分区的数据 ALTER TABLE tr DROP PARTITIO ...
- rabbitmq使用报错总结
最近公司重构服务器架构,需要用到rabbitmq,在公司搞了一个下午还是连接不上,后来细看了英文说明,测试连接成功,得出如下报错几点. 我用的安装包:otp_win64_21.3.exe(erlang ...
- UOJ #76 【UR #6】懒癌
确实是一道很不错的题啊. 题目链接 题意 感觉也没什么特别简洁的版本,大家直接看题面吧. 题解 我第一次看到这个类似问题的背景是疯狗,因此下面的题解不自觉的代入了...大家明白意思就好. 我们考虑对于 ...
- iOS程序的启动执行顺序
1 程序的入口 进入main函数, 设置AppDelegate称为函数的代理 2 程序完成加载 -[AppDelegate application:didFinishLaunchingWithOpt ...
- poj1068 【模拟】
Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: ...
- Educational Codeforces Round 8 B. New Skateboard
题目链接:http://codeforces.com/problemset/problem/628/B 解题思路: 一个数最后两位数能被4整除那么这个数就能被4整除,而且题目还是连续的子序列,这就很简 ...
- day30 __hash__ 计算哈希值
hash() # __hash__哈希的时候会根据内存地址进行哈希,因为地址不同所以哈希的值也不同,哪怕是完全一样子的属性得出的哈希值也不一样因此存在需要某些时刻期望属性相同得出相同哈希值可以控制对象 ...
- Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家
Stack Overflow 的数据科学家 David Robinson 发现,软件行业的分工让不同发达地区的程序员依赖于不同的编程语言.软件已经是一个全球性的行业,也有高端低端之分,最高端的是数据 ...
- Leetcode 7.反转整数 By Python
给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假 ...