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; /// < ...
随机推荐
- php数组相加 两个数组键名相同 后者不能覆盖前者
array(“a”)+array(“b”)结果还是array(“a”) array(“a”)+array(“b”)的结果是 array(“a”) 因为,它们等效于array(“0″=>”a”)+ ...
- CAS认证(1):流程详解
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 设置 Linux 文件和文件夹权限的方法
1.字符表示法 类型 操作 权限 u + r g - w o = x a 类型代表改动权限的对象,u表示文件的用户.g表示文件全部者的群组,o表示非用户组用户.a表示ugo 操作 + 表示添加权限,- ...
- java缓存算法【转】
http://my.oschina.net/u/866190/blog/188712 提到缓存,不得不提就是缓存算法(淘汰算法),常见算法有LRU.LFU和FIFO等算法,每种算法各有各的优势和缺点及 ...
- hdu4462 Scaring the Birds
Scaring the Birds Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- 没有找到MSVCR100.dll解决方法
转自:http://hi.baidu.com/fjdvd/blog/item/3679b201ec3d6b154afb515d.html MSVCR100.dll下载(游戏丢失msvcr100.dll ...
- Some current MySQL Architecture writings
Posted on 19/09/2014 by Stewart Smith So, I’ve been looking around for a while (and a few times now) ...
- kcachegrind gui for callgrind
DocumentationScreenshotsDownload/SourcesLinksRoadmapBugs & Wishes This is the homepage of the pr ...
- 在其它路径新建cocos2d-x项目
打开vs2010程序,然后选择“文件—新建—项目”,如图 改了一下位置,放在D:\Program Files\cocos2d-x\ ,确定 然后点下一步 这个程序不需要物理引擎,所以可以把上面红色的圈 ...
- C# - 转换
无论什么类型 它们存储的其实都是一系列的位 在将A类型转换为B类型时 如果能完整转换 那么系统会将两个操作数自动进行隐式转换 但也有可能因为A类型的存储位数比B类型的存储位数大 那么B类型可能就没有足 ...