C#实现DataTable数据行列转换

一、代码

        public static DataTable RevertRowToColumn(DataTable sourcedt)
        {
            DataTable dt = new DataTable();
            //转换后的第一列名,以后此列每行存放sourcedt对应对应的每列列名
            dt.Columns.Add("COLUMN_NAME", typeof(string));

            //第二行及以后,转换后重命名的列名,列数等于sourcedt行数
            string[] aa = new string[sourcedt.Rows.Count];
            //string[] aa = { "VLAUE_1", "VLAUE_2", "VLAUE_3", "VLAUE_4", "VLAUE_5", "VLAUE_6", "VLAUE_7", "VLAUE_8", "VLAUE_9", "VLAUE_10" };
            for (int i = 0; i < sourcedt.Rows.Count; i++)
            {
                aa[i] = "VLAUE_" + (i + 1);
            }  

            //dt添加Columns
            for (int i = 0; i < aa.Length; i++)
            {
                dt.Columns.Add(aa[i].ToString(), typeof(string));//统一按照string类型进行存放
            }

            //对sourcedt进行转换
            for (int j = 0; j < sourcedt.Columns.Count; j++)
            {
                DataRow dr = dt.NewRow();
                string column_name = sourcedt.Columns[j].ColumnName;
                dr["COLUMN_NAME"] = column_name;//把source的列名赋值给转换成行的第一列值
                for (int i = 0; i < sourcedt.Rows.Count; i++)
                {
                    string cell_value = sourcedt.Rows[i][column_name].ToString();
                    dr[i + 1] = cell_value;
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }

二、结果

转置前:

转置后:

注意:此转换的每列列类型统一为:typeof(string)类型。

到此这篇关于C#实现DataTable数据行列转换的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# DataTable常见用法汇总

    C# DataTable 的常见用法: (1)新建数据表. DataTable dt=new DataTable();如果带个String参数,此参数表示表名. (2)向表添加列. //数据库的Nvarchar等类型,在此可用String兼容.可不指明数据类型 DataColumn dc = new DataColumn("商品编号", typeof(system.string)); dt.Columns.Add(dc); (3)设置表特定行与列的数据值. dt.Rows[i].Set

  • C#对DataTable中的某列进行分组

    有时候我们从数据库中查询出来数据之后,需要按照DataTable的某列进行分组,可以使用下面的方法实现,代码如下: using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DataTableGroupDemo { class Program { static voi

  • C# Datatable的几种用法小结

    在C#中,从数据库中读取出来的数据一般都会存储在datatable中.datatable其实也是一张表,就像是从数据库中将检索出来的结果copy到datatable中一样.datatable的内部数据结构就是这样的 一个二维表. 下面介绍一下datatable中的几种用法. 添加引用 //引用命名空间 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"new-tabel"的空表: DataT

  • C# DataTable与Model互转的示例代码

    /// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where T : new() { /// <summary> /// List泛型转换DataTable. /// </summary> public DataTable ListToDataTable<T>(List<T> items) { var tb = new D

  • c#中DataTable转List的2种方法示例

    在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,List<T>类是ArrayList类的泛型等效类,该类使用大小可按需动态增加的数组实现IList<T>泛型接口.这篇文章主要介绍了c# DataTable 转 List的两种方法,下面来一起看看吧. 1.  直接写一个datatable转list的类 2. 利用泛型来写,更加通用 public List<Dictionary<string

  • C# DataTable数据遍历优化详解

    我们在进行开发时,会经常使用DataTable来存储和操作数据,我发现在遍历DataTable并对数据进行删除和添加操作时速度非常慢,查阅相关资料并测试在添加主键后可以使遍历和操作速度提高很多: 测试代码,测试的是我们向取出来数据满足Flag!=1条件的所有数据的后面添加一条数据(因为这条数据的一些字段值是根据前面的几条满足条件["AccID='" + accID + "' AND Y='" + year + "' AND AbsID <= &quo

  • C#实现DataTable转TXT、CSV文件

    转TXT文件 public object DataTableToTXT(DataTable vContent, string vOutputFilePath) { object resObj; StringBuilder sTxtContent; try { if (File.Exists(vOutputFilePath)) File.Delete(vOutputFilePath); sTxtContent = new StringBuilder(); //数据 foreach (DataRow

  • C#把DataTable导出为Excel文件

    实现DataTable转为Excel文件,和上次分享的Excel文件转为DataTable互为反操作.DataTable转化为Excel文件是通过传入一个DataTable类型的参数,然后将传入的DataTable转化为Excel文件.实现关键代码如下: 方法一: /// <summary> /// DataTable数据导出Excel /// </summary> /// <param name="data"></param> ///

  • C#中DataTable的创建与遍历实现

    1.创建DataTable对象 /// <summary> /// 创建DataTable对象 /// </summary> public static DataTable CreateDataTable() { //创建DataTable DataTable dt = new DataTable("NewDt"); //创建自增长的ID列 DataColumn dc = dt.Columns.Add("ID", Type.GetType(&

  • C#中的DataTable查询实战教程

    DataTable查询 工作中遇到了需要进行DataTable进行查询的需求,简单研究了一下,最终使用一下方案实现,简单记录一下便于以后使用. DataTable dt = dataBox.GetDataForDataTable();//获取DataTable所有数据,准备进行查询 DataRow[] dtRow = dt.Select("调剂日期='"+MediumCode.Text.Trim()+"'");//根据查询条件,筛选出所有满足条件的列 DataTab

  • C#获取DataTable对象状态DataRowState

    DataGridView:获取 DataRow 对象的状态,共有5个枚举值. Added 该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用. Deleted 该行已通过 DataRow 的 Delete 方法被删除.  Detached 该行已被创建,但不属于任何 DataRowCollection.DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前:或从集合中移除之后.  Modified 该行已被修改,AcceptChanges 尚

  • C#去除DataTable重复数据的三种方法

    业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避免目标库插入重复数据.这重复数据可能是源数据库本身就有重复数据,还有就是已经插入避免重复插入. 过滤自身重复数据解决方案 第一种:采用DataView.ToTable()方法 DataView.ToTable 方法 .NET Framework 2.0 其根据现有 DataView中的行,创建并返回

随机推荐