datatable 行列转换
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dt = GetDt();
DataTable res = Col2Row(dt, "Col01");
DataTable test = Col2Row(dt);
} public static DataTable Col2Row(DataTable src, int columnHead)
{
DataTable result = new DataTable();
DataColumn myHead = src.Columns[columnHead];
result.Columns.Add(myHead.ColumnName);
for (int i = ; i < src.Rows.Count; i++)
{
result.Columns.Add(src.Rows[i][myHead].ToString());
}
//
foreach (DataColumn col in src.Columns)
{
if (col == myHead)
continue;
object[] newRow = new object[src.Rows.Count + ];
newRow[] = col.ColumnName;
for (int i = ; i < src.Rows.Count; i++)
{
newRow[i + ] = src.Rows[i][col];
}
result.Rows.Add(newRow);
}
return result;
} public static DataTable Col2Row(DataTable src, string columnHead)
{
for (int i = ; i < src.Columns.Count; i++)
{
if (src.Columns[i].ColumnName.ToUpper() == columnHead.ToUpper())
return Col2Row(src, i);
}
return new DataTable();
} private static DataTable GetDt()
{
DataTable dt = new DataTable();
dt.Columns.Add("Col01");
dt.Columns.Add("Col02");
dt.Columns.Add("Col03"); DataRow dr = dt.NewRow();
dr["Col01"] = ;
dr["col02"] = ;
dr["Col03"] = ;
dt.Rows.Add(dr); DataRow dr2 = dt.NewRow();
dr2["Col01"] = ;
dr2["col02"] = ;
dr2["Col03"] = ;
dt.Rows.Add(dr2); DataRow dr3 = dt.NewRow();
dr3["Col01"] = ;
dr3["col02"] = ;
dr3["Col03"] = ;
dt.Rows.Add(dr3); return dt;
} private static DataTable Col2Row(DataTable dt)
{
DataTable result = new DataTable();
for (int i = ; i < dt.Rows.Count; i++)
{
result.Columns.Add(i.ToString());
}
result.Columns.Add(dt.Rows.Count.ToString());
foreach (DataColumn col in dt.Columns)
{
object[] newRow = new object[dt.Rows.Count + ];
newRow[] = col.ColumnName;
for (int i = ; i < dt.Rows.Count; i++)
{
newRow[i + ] = dt.Rows[i][col];
}
result.Rows.Add(newRow);
}
return result;
} }
}
关于行列转换,记下来,免得以后要用在写。



datatable 行列转换的更多相关文章
- DataTable行列转换
#region DataTable行列转换 /// <summary> /// DataTable行列转换 /// </summary> /// <param name= ...
- 【转】Linq实现DataTable行列转换
出处:http://www.cnblogs.com/li-peng/ 转换前的table: 转换后的table: 代码里有详细的说明, 还有一些参数我都截图了下面有 using System;usin ...
- LINQ实现行列转换
用SQL语句实现行列转换很容易,但也有时候需要在程序中实现,找了好久,发现一篇文章写的挺不错的 http://blog.csdn.net/smartsmile2012/article/details/ ...
- Oracle学习之路-- 案例分析实现行列转换的几种方式
注:本文使用的数据库表为oracle自带scott用户下的emp,dept等表结构. 通过一个例子来说明行列转换: 需求:查询每个部门中各个职位的总工资 按我们最原始的思路可能会这么写: ...
- SQL Server中行列转换 Pivot UnPivot
SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...
- SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子
使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...
- 如何用Pivot实现行列转换
在Oracle中,如果要实现行列转换,较为常见的是用DECODE和CASE语句.对于简单的行列转行,DECODE和CASE语句尚能应付.在逻辑比较复杂,分组聚合较多的场景中,DECODE和CASE语句 ...
- SQL Server SQL性能优化之--pivot行列转换减少扫描计数优化查询语句
原文出处:http://www.cnblogs.com/wy123/p/5933734.html 先看常用的一种表结构设计方式: 那么可能会遇到一种典型的查询方式,主子表关联,查询子表中的某些(或者全 ...
- C# 将DataTable数据源转换成实体类
using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...
随机推荐
- light oj 1354 - IP Checking
1354 - IP Checking PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB An I ...
- 如何用Windbg找到被catch住的C++的异常
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何用Windbg找到被catch住的C++的异常.
- (二 )VMware workstation 部署虚拟集群实践——并行批量操作环境部署
在上一篇博客中,已经介绍了安装虚拟集群的过程和需要注意的细节问题. 这篇主要是介绍如何批量登陆远程主机和配置,这个过程中是在没有部署并行处理工具或者集群管理工具的前进行的. ------------首 ...
- LIMS系统供应商一览表
LIMS系统供应商一览表. 国内自主研发的LIMS供应商的产品质量一般,国外的LIMS产品在本土化方面,北京三维天地的质量最佳. LIMS系统JAVA..Net平台上都有,由于实验室业务数据量等原因, ...
- SmartForms 小技巧
1.添加空行,保证每一页有固定的打印的表格行数 上图,每页最多打印13行,数据只有11行,自动添加两个空行补齐 代码如下“ "定义变量: data: l_blank type i. &quo ...
- java15 IO装饰设计模式
IO装饰设计模式:(IO中使用了装饰设计模式) 节点流可以直接从源读取数据,处理流就是对节点流的包装,这就是装饰,装饰就是对原有的流的性能的提升.比如买的车,马力不够,就进行装饰,使其马力增大. 装饰 ...
- C# - 系统类 - Type类
Type类 ns:System Type类封装类型 它的实例提供一个特定类型的数据和函数成员的信息 可以使用Type类实例来调用类型的成员 一般将Type类用于反射 Type类的静态字段如下 Empt ...
- byte数组与对象之间的相互转换
在进行网络通信时可能需要传输对象,如果用NIO的话,只能用Bytebuffer和channel直接 通过ByteArray*Stream和Object*Stream可以将byte数组和对象进行相互的转 ...
- setValue 和 setObject 的区别
在使用NSMutableDictionary 的时候经常会使用setValue forKey 与 setObject forKey,他们经常是可以交互使用的. 1.setValue forKey的定义 ...
- mysq优化参数详解:innodb_buffer_pool_size,innodb_file_per_table
Mysql配置参数: thread_pool:如果支持的话,使用线程池 innodb_buffer_pool_size:物理内存50%-70%最高80%独立实例,多实例:60% innodb_flus ...