C# DataTable
DataTable是一个临时保存数据的网格虚拟表,表示内存中数据的一个表,是一个二维表,也是一个后台数据源与前台显示之间的适配器。
常用属性
| 属性名 |
含义 |
| CaseSensitive |
指示表中的字符串是否区分大小写 |
| Columns |
获取属于该表的列的集合 |
| Rows |
获取属于该表的行的集合 |
| TableName |
获取或者设置DataTable 的名称 |
| ChildRelation |
获取此DataTable 的子关系的集合 |
| Constraints |
获取由该表维护的约束的集合 |
| DataSet |
获取此表所属的DataSet |
| DefaultView |
获取可能包括筛选视图或游标位置的表的自定义视图 |
| HasErrors |
获取一个值,该值表示该表所属的DataSet 的任何表的任何行中是否有错误 |
| MinimumCapacity |
获取或设置该表最初起始大小,该表中的最初起始大小默认值为50 |
常用方法
| 方法名 |
功能 |
| BeginInit() |
开始初始化在窗体上使用或由另一个组件使用 |
| DataTable() |
初始化发生在运行时 |
| Clear() |
清除所有数据的DataTable |
| Clone() |
克隆DataTable的结构,包括所有的DataTable架构和约束 |
| EndInit() |
结束在窗体上使用或由另一个组件使用的DataTable的初始化 |
| ImportRow(DataRow row) |
将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值。 |
| Merge(DataTable table) |
将指定的DataTable与当前的DataTable合并 |
| NewRow() |
创建与该表具有相同架构的新的DataRow() |
常用使用方法
//=====================创建=======================
//创建一个空表
DataTable dt = new DataTable();
//创建一个名为“Table_New"的空表
DataTable dt = new DataTable("Table_New");
//指定的表明和命名空间初始化DataTable类的新实例
DataTable dt = new DataTable("Table_New","Test");
//=====================添加列=======================
DataColumn dc = new DataColumn();
//1、创建空列
dt.Columns.Add(dc);
//2、创建带列名和类型名的列
dt.Columns.Add("column1",System.Type.GetType("System.String"));
dt.Columns.Add("column1",typeof(String));
//3、通过列架构添加列
DataColumn dc = new DataColumn("column1",System.Type.GetType("System.DataTime"));
DataColumn dc = new DataColumn("column1",typeof(DataTime));
dt.Columns.Add(dc);
//=====================添加行=======================
//1、创建空行
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
//2、创建空行
dt.Rows.Add();
//3、通过行框架创建并赋值
dt.Rows.Add("张三",DataTime.Now)//Add里面参数的数据顺序要和dt中的列的顺序对应
//4、通过复制dt2表的某一行来创建
dt.Rows.Add(dt2.Rows[i],ItemArray);
//=====================赋值/取值=======================
//新建行的赋值
DataRow dr = dt.NewRow();
dr[0] = "张三";//通过索引赋值
dr["column1"] = DataTime.Now;//通过名称赋值
//对表已有行进行赋值
dt.Rows[0][0] = "张三";//通过索引赋值
dt.Rows[0]["column1"]=DataTime.Now;//通过名称赋值
//取值
string name = dt.Rows[0][0].ToString();
string time = dt.Rows[0]["column1"].ToString();
//=====================筛选行=======================
//选择column1列值为空的行的集合
DataRow[] drs = dt.Select("column1 is null");
//选择column0列值为”李四“的行的集合
DataRow[] drs = dt.Select("column0 = '李四'");
//筛选column0列值中由”张“的行的集合(模糊查询)
DataRow[] drs = dt.Select("column0 like '张%'");//如果多条件可加and或or
//筛选column0列值中由”张“的行的集合并按column0降序排列
DataRow[] drs = dt.Select("column0 like '张%'","column1 DESC");
//=====================删除行=======================
dt.Rows.Remove(dt.Rows[0]);
dt.Rows.RemoveAt(0);
dt.Row[0].Delete();
dt.AcceptChanges();