表结构如下:
- 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 t1
- name 胜 负
- -------------------- ----------- -----------
- jim 2 1
- Sam 0 2
- Tom 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进行动态查询以及如何实现行转列,这对于构建灵活的数据分析和展示功能至关重要。 首先,让我们来理解什么是LINQ动态查询。在传统的LINQ查询中,我们通常使用lambda表达式或方法链来定义...
本文将介绍使用C# List实现行转列的通用方案,通过使用System.Linq.Dynamic动态LINQ库来完成行转列功能,并且介绍了过滤功能,具有很好的参考价值。 1. 行转列的需求分析 在报表统计方面,经常涉及到行转列报表的...
在c#后台实现 行转列的显示功能,这样就是可以不借助sql数据库的查询分析器功能也可以实现行转列功能的实现了
使用linq把多列的List转化为只有指定列的List 1、方式一 2、方式二 您可能感兴趣的文章:C#中Linq查询基本操作使用实例c#中LINQ的基本用法实例C#中的Linq to Xml详解C# Linq读取XML文件的实例C#使用linq对数组...
LINQ(Language ...总的来说,这段代码利用了LINQ的强大功能,简洁地从数据源中过滤、排序并转换了`FunctionPoint`对象,无需手动列出所有字段。这使得代码更易于阅读和维护,同时保持了与数据库交互的灵活性。
4. **自定义显示**:可能需要进一步自定义DataGridView列,以匹配数据源的字段或属性,设置列宽、排序方式等。 5. **事件处理**:处理DataGridView的各种事件,如行选择、单元格更改,以实现交互性。 在实际项目中...
SQL中的`SELECT`语句用于选取数据表中的列或组合列。在Lambda LINQ中,这对应于`.Select()`方法。例如: ```csharp // SQL: SELECT * FROM HumanResources.Employee var allEmployees = Employees.Select(e => e...
8. OrderBy和OrderByDescending:用于按指定列的值对DataTable中的行进行升序或降序排序。示例中展示了如何对Id列进行排序。 9. Skip和Take:用于分页查询,Skip用于跳过指定数量的行,Take用于从当前行开始取指定...
例如,如果有一个DataTable dt,其中列名为"Column1"和"Column2",我们可以创建一个新的DataTable dtTranspose,然后遍历每一行,将列值作为新行的列值插入。 2. **List的行列转换** 当数据存储在List...
3. **添加行**:遍历LINQ查询结果,将每一项添加为`DataTable`的一行。 具体代码示例如下: ```csharp DataTable dt_Result = new DataTable(); foreach (var item in dt_linq_Car) { dt_Result.Columns.Add(...
- **实体类(Entity Class)**:每个数据库表对应一个实体类,类的属性对应表的列,对象实例代表数据库中的行。 - **数据绑定**:Linq To SQL支持WPF和ASP.NET的数据绑定,可以方便地将查询结果直接显示在UI上。 -...
### Linq to DataSet知识点详解 #### 一、LINQ to DataSet概述 **LINQ to DataSet** 是 **Language Integrated Query (LINQ)** 在 .NET Framework 中针对 **DataSet** 的一种实现方式,它允许开发者以声明性的方式...
2. 使用LINQ和Lambda表达式获取第一行某一列的值 LINQ是.NET框架中用于查询和操作数据的强大的查询语法。它允许我们以声明式的方式书写代码,以查询和操作数据源。 为了使用LINQ,首先需要引入命名空间`System.Linq...
例如`a.Field("x")`表示获取`a`所在行的`x`列的值,并转换为`int`类型。 #### 四、总结 本文通过一个具体的LINQ查询表达式示例,详细介绍了LINQ的核心语法结构及其实现原理。LINQ的强大之处在于它不仅能够处理内存...
本篇文章将详细讲解如何在`DataTable`中移除重复行,并进行重复列的合并。 首先,我们需要理解`DataTable`的基本概念。`DataTable`是`System.Data`命名空间中的一个类,它是ADO.NET数据模型的一部分,用于存储和...
通过Linq和其他数据操作技术,我们可以轻松地完成行转列的转换,这对于数据可视化和分析非常有帮助。对于开发者来说,理解和掌握这些技能至关重要,尤其是在日常的工作中遇到类似问题时。同时,CSDN作为国内知名的...