`
sangei
  • 浏览: 336319 次
  • 性别: 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动态查询。在传统的LINQ查询中,我们通常使用lambda表达式或方法链来定义...

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

    本文将介绍使用C# List实现行转列的通用方案,通过使用System.Linq.Dynamic动态LINQ库来完成行转列功能,并且介绍了过滤功能,具有很好的参考价值。 1. 行转列的需求分析 在报表统计方面,经常涉及到行转列报表的...

    C#行转列的实现

    在c#后台实现 行转列的显示功能,这样就是可以不借助sql数据库的查询分析器功能也可以实现行转列功能的实现了

    c#使用linq把多列的List转化为只有指定列的List

    使用linq把多列的List转化为只有指定列的List 1、方式一 2、方式二 您可能感兴趣的文章:C#中Linq查询基本操作使用实例c#中LINQ的基本用法实例C#中的Linq to Xml详解C# Linq读取XML文件的实例C#使用linq对数组...

    linq查询整个的简单方法

    LINQ(Language ...总的来说,这段代码利用了LINQ的强大功能,简洁地从数据源中过滤、排序并转换了`FunctionPoint`对象,无需手动列出所有字段。这使得代码更易于阅读和维护,同时保持了与数据库交互的灵活性。

    LINQ TO DGV

    4. **自定义显示**:可能需要进一步自定义DataGridView列,以匹配数据源的字段或属性,设置列宽、排序方式等。 5. **事件处理**:处理DataGridView的各种事件,如行选择、单元格更改,以实现交互性。 在实际项目中...

    lambda-LINQ-SQL对照表

    SQL中的`SELECT`语句用于选取数据表中的列或组合列。在Lambda LINQ中,这对应于`.Select()`方法。例如: ```csharp // SQL: SELECT * FROM HumanResources.Employee var allEmployees = Employees.Select(e => e...

    DataTbale查询使用Linq简易代码演示.pdf

    8. OrderBy和OrderByDescending:用于按指定列的值对DataTable中的行进行升序或降序排序。示例中展示了如何对Id列进行排序。 9. Skip和Take:用于分页查询,Skip用于跳过指定数量的行,Take用于从当前行开始取指定...

    table行列数据转换

    例如,如果有一个DataTable dt,其中列名为"Column1"和"Column2",我们可以创建一个新的DataTable dtTranspose,然后遍历每一行,将列值作为新行的列值插入。 2. **List的行列转换** 当数据存储在List...

    linq对数据datatale的查询

    3. **添加行**:遍历LINQ查询结果,将每一项添加为`DataTable`的一行。 具体代码示例如下: ```csharp DataTable dt_Result = new DataTable(); foreach (var item in dt_linq_Car) { dt_Result.Columns.Add(...

    补充知识点实例(Linq To SQL)

    - **实体类(Entity Class)**:每个数据库表对应一个实体类,类的属性对应表的列,对象实例代表数据库中的行。 - **数据绑定**:Linq To SQL支持WPF和ASP.NET的数据绑定,可以方便地将查询结果直接显示在UI上。 -...

    Linq to DataSet

    ### Linq to DataSet知识点详解 #### 一、LINQ to DataSet概述 **LINQ to DataSet** 是 **Language Integrated Query (LINQ)** 在 .NET Framework 中针对 **DataSet** 的一种实现方式,它允许开发者以声明性的方式...

    Asp.net中获取DataTable选择第一行某一列值

    2. 使用LINQ和Lambda表达式获取第一行某一列的值 LINQ是.NET框架中用于查询和操作数据的强大的查询语法。它允许我们以声明式的方式书写代码,以查询和操作数据源。 为了使用LINQ,首先需要引入命名空间`System.Linq...

    完整linq语法

    例如`a.Field("x")`表示获取`a`所在行的`x`列的值,并转换为`int`类型。 #### 四、总结 本文通过一个具体的LINQ查询表达式示例,详细介绍了LINQ的核心语法结构及其实现原理。LINQ的强大之处在于它不仅能够处理内存...

    datatable中移除重复行 ,并能合并重复行

    本篇文章将详细讲解如何在`DataTable`中移除重复行,并进行重复列的合并。 首先,我们需要理解`DataTable`的基本概念。`DataTable`是`System.Data`命名空间中的一个类,它是ADO.NET数据模型的一部分,用于存储和...

    WindowsFormsApp1.zip

    通过Linq和其他数据操作技术,我们可以轻松地完成行转列的转换,这对于数据可视化和分析非常有帮助。对于开发者来说,理解和掌握这些技能至关重要,尤其是在日常的工作中遇到类似问题时。同时,CSDN作为国内知名的...

Global site tag (gtag.js) - Google Analytics