【WinForm】杂记(6):C#之DataTable类(总结)

内容列表

属性

  • 获取行列数

方法

  • 添加列
  • 添加行
  • 删除行列
  • 获取列名
  • 获取列类型
  • 更改列名
  • 获取单元格数值
  • 写入数值到单元格

其它

  • 转置
  • 将一张表的某列添加到另一张表
  • 将一张表的某行添加到另一张表

属性

获取行列数

int numOfRows = dt.Rows.Count;
int numOfCols = dt.Columns.Count;

  

方法

添加列

dt.Columns.Add("Name", typeof(string)).SetOrdinal(0);//to the first column
DataColumn dc1 = new DataColumn("Tol", typeof(string));
dt.Columns.Add(dc1);

添加行

//method1
DataRow dr1 = dt.NewRow();
dt.Rows.Add(dr1);
//method2
dt.Rows.Add();

删除行列

dt.Columns.RemoveAt(index);//index is location of coldt.Rows.RemoveAt(index);

  

获取列名

dt.Columns[i].ColumnName.ToString();

获取列类型

Type dataType= dataDt.Columns["Name"].DataType

更改列名

dt.Columns[0].ColumnName = "AAA";

  

获取单元格数值

var val = dt.Rows[i][j].toString();  

写入数值到单元格

dt.Rows[i][j]=val;//The type of val should be the same as the column, which the cell belongs to

  

完整代码

private void tableoperations()
{
    System.Data.DataTable dt = new System.Data.DataTable();
    int index = 0;
    int i = 0, j = 0;

    //add new column
    dt.Columns.Add("Name", typeof(string)).SetOrdinal(0);//to the first column
    DataColumn dc1 = new DataColumn("Tol", typeof(string));
    dt.Columns.Add(dc1);

    //add new row
    //method1
    DataRow dr1 = dt.NewRow();
    dt.Rows.Add(dr1);
    //method2
    dt.Rows.Add();

    //delet columns
    dt.Columns.RemoveAt(index);
    //delet rows
    dt.Rows.RemoveAt(index);

    //get the column name
    dt.Columns[i].ColumnName.ToString();
    //change columns name:
    dt.Columns[0].ColumnName = "AAA";

    //read/write the cell value
    dt.Rows[i][j] = 1;
    //get column type
    Type dataType = dt.Columns["Name"].DataType;

}

  

其它

转置

private System.Data.DataTable transpositioin(System.Data.DataTable tb_org, int col_start = 0)//the original one has names of rows and columns
{
    System.Data.DataTable tb_trans = new System.Data.DataTable();
    tb_trans.Columns.Add("item", typeof(string));
    for (int i = 0; i < tb_org.Rows.Count; i++) {
        tb_trans.Columns.Add(tb_org.Rows[i][col_start].ToString(), typeof(string));//can change the type
    }
    for (int i = 0; i < tb_org.Columns.Count; i++) {//here i only need to start from the (start+1)th column
        tb_trans.Rows.Add();
        tb_trans.Rows[i][0] = tb_org.Columns[i].ColumnName.ToString();//add row name
        for (int j = 0; j < tb_org.Rows.Count; j++) {
            tb_trans.Rows[i][j + 1] = double.Parse(tb_org.Rows[j][i].ToString());//add value, the first column is the orinigal column name
        }
    }
    return tb_trans;
}

将一张表的某列添加到另一张表(行添加的同理)

private System.Data.DataTable getcolumn(System.Data.DataTable tb_WithTarCol)
{
    System.Data.DataTable tb = new System.Data.DataTable();
    tb.Columns.Add(tb_WithTarCol.Columns[0].ColumnName.ToString(), typeof(string));//here, get the first column
    foreach (DataRow dr in tb_WithTarCol.Rows) {
        DataRow tmp = tb.NewRow();
        tmp[0] = dr[0];//get the first cell, which belongs to the first column
        tb.Rows.Add(tmp);
    }
    return tb;
}

  

 

原文地址:https://www.cnblogs.com/RicardoIsLearning/p/12116037.html

时间: 2024-08-02 13:20:40

【WinForm】杂记(6):C#之DataTable类(总结)的相关文章

DataTable类

DataTable是一个使用非常多的类,记得我在刚刚开始学习.Net的时候就已经了解并用过这个类,但如今再来看看,才发现这个类非常之复杂,复杂表现在哪些地方呢?主要是这个类与其他很多类都有关联,也就是说,你要玩透DataTable这个类,你必须要了解很多其他的类. DataTable是一个很古老的类,再往前不清楚,但是.Net2.0就肯定有了.主要用于数据的封装与存储等等.这个类,你要是在公司里工作,必定会用到,无论是维护旧系统或是使用一些老框架都会用到,必须要熟悉常用的操作. 下面给出一些Da

DataTable 类

DataTable 类表示一个内存中数据表. 一.DataTable简介 (1)构造函数 DataTable() 不带参数初始化DataTable 类的新实例. DataTable(string tableName) 用指定的表名初始化DataTable 类的新实例. DataTable(string tableName, string tableNamespace) 用指定的表名和命名空间初始化DataTable 类的新实例. (2) 常用属性 CaseSensitive 指示表中的字符串比较

C#操作DataTable类

一.DataTable简介 (1)构造函数 DataTable()  不带参数初始化DataTable 类的新实例 DataTable(string tableName) 用指定的表名初始化DataTable 类的新实例 DataTable(string tableName, string tableNamespace)  用指定的表名和命名空间初始化DataTable类的新实例 (2)常用属性 CaseSensitive 指示表中的字符串比较是否区分大小写 ChildRelations 获取此

C#winform导出数据到Excel的类

1 /// <summary> 2 /// 构造函数 3 /// </summary> 4 public ExportData() 5 { 6 7 } 8 /// <summary> 9 /// 保存文件名 10 /// </summary> 11 private string savefilename = ""; 12 /// <summary> 13 /// 准备导出的数据容器 14 /// </summary>

制作可自定义风格的winform组件类(二)知识要点总结

本文不断补充中,这全都是浪费了我很多时间才走过的坎 一.继承关系. 所有自定义的控件都继承自UserControl,当然你也可以直接从标准的winform控件中派生新类,但这样生出来的控件不能在设计时使用,所以还是得规规矩矩的按.NET给定的路线走.UserControl继承于标准控件的基类Control,使得用户自定义的控件与标准控件在运行时没有任何差别,但在设计时却有很大的不同,有些属性被override后不起作用,似乎是IDE认准了原来属性的get和set方法,对策就是隐藏这个属性,然后用

.net WinForm 的数据绑定

.net WinForm 的数据绑定相当灵活 http://www.cnblogs.com/ydong/archive/2006/04/22/381847.html 原来只知道 Control 类上的数据绑定可以直接绑定数据库中的字段.但是它还可绑定所有实现了 IList or IListSource 接口的类的实例.今天写的程序原来是想用 DataBinding, DataSource, ValueMember, DisplayMember 属性来直接绑定表的,但是如果那样做的话就是让界面层直

深入详解DataTable

在学习DataTable知识之前,我们有必要了解下ADO.NET.以下摘自MSDN: ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问.数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索.处理和更新所包含的数据.ADO.NET 通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件.ADO.NET 包含用于连接到数据库.执行命令和检索结果的 .NET Frame

C# DataTable的詳細用法

转载别人的转载,原作者都不知道了 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例.           

DataSet和DataTable区别

DataSet和DataTable区别 da.Fill(ds, "alias_1"); //使用DataAdapter的Fill方法(填充),调用SELECT命令,别名 dataGridView8.DataSource = ds.Tables[0]; da.Fill(dt);       //直接填充给dt flex.DataSource = dt; ds.Tables[0]==dt DateSet是数据在内存中的缓存,是保存数据的数据结构,相当于一个虚拟的数据库,他可以包含多个Dat