`
sangei
  • 浏览: 329110 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

linq 行转列

阅读更多

表结构如下:

 

[sql] view plain copy
 
  1. id          NAME                 result   
  2. ----------- -------------------- ------   
  3. 1           jim                  胜   
  4. 2           jim                  胜   
  5. 3           jim                  负   
  6. 4           Tom                  胜   
  7. 5           Tom                  负   
  8. 6           Sam                  负   
  9. 7           Sam                  负  

 

想得到的结果是:

 

[sql] view plain copy
 
  1. NAME                 胜           负   
  2. -------------------- ----------- -----------   
  3. jim                  2           1   
  4. Sam                  0           2   
  5. Tom                  1           1  

 

SQL可以这样来实现:

 

[sql] view plain copy
 
  1. SELECT t1.name,  
  2.    
  3.   (SELECTCOUNT(1)FROM temp t2 WHERE t2.NAME=t1.NAME AND t2.result='胜')AS'胜',  
  4.    
  5.   (SELECTCOUNT(1)FROM temp t3 WHERE t3.NAME=t1.NAME AND t3.result='负')AS'负'  
  6.    
  7. FROM  
  8.    
  9. (SELECT NAME FROM temp GROUPBY NAME ) AS t1  
  10. name                胜          负  
  11. -------------------- ----------- -----------  
  12. jim                 2           1  
  13. Sam                 0           2  
  14. Tom                 1           1  
  15. (3row(s) affected)  

 


用LINQ怎么来写呢?

 

[csharp] view plain copy
 
  1. var query=from t in Temps  
  2.     group t by t.NAMEinto m  
  3.     selectnew  
  4.     {   
  5.       NAME=m.Key,   
  6.       胜=m.Count(n=>n.Result=="胜"),  
  7.       负=m.Count(n=>n.Result=="负")  
  8.     };  

 


这是LINQ翻译成的SQL语句:

 

[sql] view plain copy
 
  1. -- Region Parameters  
  2.    
  3. DECLARE  
  4.    
  5. @p0 NVarChar(1) = N''  
  6.    
  7. DECLARE  
  8.    
  9. @p1 NVarChar(1) = N''  
  10. -- EndRegion  
  11.    
  12.    
  13. SELECT  
  14. [t1]  
  15. [NAME], (  
  16. SELECT COUNT(*)  
  17. FROM [tempAS  
  18. [t2]   
  19. WHERE ([t2]  
  20. [result] = @p0) AND ((([t1]  
  21. [NAMEIS NULLAND ([t2]  
  22. [NAMEIS NULL)) OR (([t1]  
  23. [NAMEIS NOT NULLAND ([t2]  
  24. [NAMEIS NOT NULLAND ([t1]  
  25. [NAME] = [t2]  
  26. [NAME])))  
  27. AS [], (  
  28. SELECT COUNT(*)  
  29. FROM [tempAS  
  30. [t3]  
  31. WHERE ([t3]  
  32. [result] = @p1) AND ((([t1]  
  33. [NAMEIS NULLAND ([t3]  
  34. [NAMEIS NULL)) OR (([t1]  
  35. [NAMEIS NOT NULLAND ([t3]  
  36. [NAMEIS NOT NULLAND ([t1]  
  37. [NAME] = [t3]  
  38. [NAME])))  
  39. AS  
  40. []  
  41. FROM  
  42. (  
  43. SELECT [t0]  
  44. [NAME]  
  45. FROM [tempAS  
  46. [t0]  
  47. GROUP BY [t0]  
  48. [NAME]   
  49. AS  
  50. [t1]  

 

 
 
分享到:
评论

相关推荐

    Linq动态查询、行转列

    Linq动态查询、行转列;可用于多功能的动态组合查询实现,后头返回组装的表头和数据集;实现行转列,动态linq组装

    C# List实现行转列的通用方案

    本篇通过行转列引出了System.Linq.Dynamic,并且介绍了过滤功能,具有很好的参考价值。下面跟着小编一起来看下吧

    《C#经典编程220例》.(明日科技).【带书签】-共3部分

    实例134 使datagridview控件中被选定单元格的所在行变色 229 实例135 在datagridview控件中隔行换色 231 实例136 连接excel文件 232 实例137 读取和保存用户头像 233 实例138 判断是否重复输入数据 235 实例139 删除...

    ASP.NET 控件的使用

    4.3.3 跟踪显示和转到 145 4.4 显示不同的页面视图 149 4.4.1 显示选项卡式页面视图 149 4.4.2 显示多部分表单 152 4.5 显示向导 153 4.6 小结 157 第二部分 设计ASP.NET网站 第5章 使用母版页设计网站 160 5.1 ...

    ASP.NET.4揭秘

    4.3.3 跟踪显示和转到161 4.4 显示不同的页面视图166 4.4.1 显示选项卡式页面视图166 4.4.2 显示多部分表单168 4.5 显示向导170 4.6 显示silverlight内容174 4.7 小结177 第二部分 设计asp.net网站 第5章 使用母版页...

    明日科技C#开发入门及项目实战

    实例134 使datagridview控件中被选定单元格的所在行变色 实例135 在datagridview控件中隔行换色 实例136 连接excel文件 实例137 读取和保存用户头像 实例138 判断是否重复输入数据 实例139 删除datagridview控件中的...

    LINQPad_Premium_5.31.00_Beta_Any_CPU

    现在,应使用标准LINQ-to-SQL驱动程序(在只读模式下)再次显示空间类型列。 Hyperlinq现在允许带撇号的文件名。 vi模式中的搜索功能现在可以识别行首和行尾锚点。 现在,SQL Server 2016及更高版本可以更快地获取...

    WPF编程宝典 part1

    3.4.1 调整行和列 63 3.4.2 布局舍入 64 3.4.3 跨越行和列 65 3.4.4 分割窗口 66 3.4.5 共享尺寸组 69 3.4.6 UniformGrid面板 72 3.5 使用Canvas面板进行基于 坐标的布局 72 3.5.1 Z顺序 73 3.5.2 lnkCanvas元素 74 ...

    Silverlight2.0功能展示Demo源码

    通过 System.Xml.Linq 命名空间下的类(LINQ to XML)处理 XML 数据 通过 System.ServiceModel.Syndication 命名空间下的类处理 RSS/ATOM 数据 18、Silverlight(20) - 2.0通信之WebClient, 以字符串的形式上传/下载...

    C#程序开发范例宝典(第2版).part13

    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...

    C#程序开发范例宝典(第2版).part08

    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...

    C#程序开发范例宝典(第2版).part02

    一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后...

Global site tag (gtag.js) - Google Analytics