LINQ TO SQL 实现行转列
来源:互联网 发布:知らないうちに 扫图 编辑:程序博客网 时间:2024/06/07 07:27
表结构如下:
id NAME result ----------- -------------------- ------ 1 jim 胜 2 jim 胜 3 jim 负 4 Tom 胜 5 Tom 负 6 Sam 负 7 Sam 负
想得到的结果是:
NAME 胜 负 -------------------- ----------- ----------- jim 2 1 Sam 0 2 Tom 1 1
SQL可以这样来实现:
SELECT t1.name, (SELECTCOUNT(1)FROM temp t2 WHERE t2.NAME=t1.NAME AND t2.result='胜')AS'胜', (SELECTCOUNT(1)FROM temp t3 WHERE t3.NAME=t1.NAME AND t3.result='负')AS'负' FROM (SELECT NAME FROM temp GROUPBY NAME ) AS t1name 胜 负-------------------- ----------- -----------jim 2 1Sam 0 2Tom 1 1(3row(s) affected)
用LINQ怎么来写呢?
var query=from t in Temps group t by t.NAMEinto m selectnew { NAME=m.Key, 胜=m.Count(n=>n.Result=="胜"), 负=m.Count(n=>n.Result=="负") };
这是LINQ翻译成的SQL语句:
-- Region Parameters DECLARE @p0 NVarChar(1) = N'' DECLARE @p1 NVarChar(1) = N''-- EndRegion SELECT[t1][NAME], (SELECT COUNT(*)FROM [temp] AS[t2] WHERE ([t2][result] = @p0) AND ((([t1][NAME] IS NULL) AND ([t2][NAME] IS NULL)) OR (([t1][NAME] IS NOT NULL) AND ([t2][NAME] IS NOT NULL) AND ([t1][NAME] = [t2][NAME])))) AS [], (SELECT COUNT(*)FROM [temp] AS[t3]WHERE ([t3][result] = @p1) AND ((([t1][NAME] IS NULL) AND ([t3][NAME] IS NULL)) OR (([t1][NAME] IS NOT NULL) AND ([t3][NAME] IS NOT NULL) AND ([t1][NAME] = [t3][NAME])))) AS[]FROM(SELECT [t0][NAME]FROM [temp] AS[t0]GROUP BY [t0][NAME] ) AS[t1]
- LINQ TO SQL 实现行转列
- LinQ to SQL实现 SQL in
- linq,linq to sql
- linq to sql 中的in 操作实现
- LINQ TO SQL CAST方法的实现
- LINQ TO SQL 实现无限递归查询
- LINQ TO SQL 实现无限递归查询
- LINQ : 如何为LINQ TO SQL实现自定义业务逻辑
- Linq初探--Linq to SQL
- LINQ to SQL 学习
- 什么是Linq to sql
- 使用LINQ to SQL
- 深入LINQ to SQL
- Linq To Sql注意事项
- Linq to SQL:基础知识
- LINQ to SQL实例
- 使用LINQ to SQL
- LINQ to SQL语句
- 设计模式之八、外观模式Facade
- JNA
- Centos5.2上源码编译安装Xen3.2.0
- ComboBoxTree源码
- Centos5.2上源码编译安装Xen3.2.0
- LINQ TO SQL 实现行转列
- STL--stack/queue的使用方法
- android+网络详解2
- 求一个整数的二进制最高位
- response.setHeader("Cache-Control","no-cache"); 是干什么用的
- 为每个使用linux服务器的配置远程桌面
- Linux下的vi命令
- uC/OS-II在ARM系统上的移植与实现
- 百度优化和Google优化根本区别