赞
踩
//引用命名空间
using System.Data;
//创建一个空表,
DataTable dt = new DataTable();
//创建一个名为"Table_New"的空表
DataTable dt = new DataTable("Table_New");
//在将一个没有 TableName 值的表添加到数据集DataSet中时,该表会得到一个从“Table”(表示 Table0)开始递增的默认名称 TableN
DataSet customers = new DataSet();
DataTable customersTable = customers.Tables.Add("CustomersTable"); // 这种方法在程序中很少用
DataTable中的列可以映射到数据源中的列、包含从表达式计算所得的值、自动递增它们的值,或包含主键值
通过调用表的 Columns 属性的 Add 方法。Add 方法将接受可选的 ColumnName、DataType 和 Expression 参数,并将创建新的 DataColumn 作为集合的成员。
//1.创建空列 DataColumn dc = new DataColumn(); dt.Columns.Add(dc); //2. 提供列名,并对列属性进行设置 DataTable workTable = new DataTable("Customers"); //带列名和类型名 DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32)); // 对进行属性设置 workCol.AllowDBNull = false; //列的属性设置为不允许 DBNull 值 workCol.Unique = true; //值约束为唯一 workColumn.AutoIncrement = true; //在表中添加新行时自动递增 workColumn.AutoIncrementSeed = 200; //从值 200 开始并以 3 为增量递增的列 workColumn.AutoIncrementStep = 3; // 定义主键:唯一地标识表中的每一行 workTable.PrimaryKey = new DataColumn[] {workTable.Columns["CustID"]}; // Or DataColumn[] columns = new DataColumn[1]; columns[0] = workTable.Columns["CustID"]; workTable.PrimaryKey = columns; // 创建表达式列:能够包含根据 同一行 中其他列值或根据表中 多行 的列值计算而得的值 //比如 表达式类型 示例 // 比较 “总计 >= 500” // 计算 "UnitPrice * Quantity" // 聚合 Sum(Price) workTable.Columns.Add("Total", typeof(Double)); workTable.Columns.Add("SalesTax", typeof(Double), "Total * 0.086");
//新建行的赋值
DataRow dr = dt.NewRow();//创建新行
dr[0] = "张三";//通过索引赋值
dr["column1"] = DateTime.Now; //通过名称赋值
//对表已有行进行赋值
dt.Rows[0][0] = "张三"; //通过索引赋值
dt.Rows[0]["column1"] = DateTime.Now;//通过名称赋值
//将类型化为Object的值的数组,请注意,数组中的值会根据它们在表中出现的顺序相继与各列匹配
dt.Columns.Add("序号");
dt.Columns.Add("姓名");
dt.Rows.Add(new Object[] { 1, "Smith" });
//选择column1列值为空的行的集合
DataRow[] drs = dt.Select("column1 is null");
//选择column0列值为"李四"的行的集合
DataRow[] drs = dt.Select("column0 = '李四'");
//筛选column0列值中有"张"的行的集合(模糊查询)
DataRow[] drs = dt.Select("column0 like '张%'");//如果的多条件筛选,可以加 and 或 or
//筛选column0列值中有"张"的行的集合并按column1降序排序
DataRow[] drs = dt.Select("column0 like '张%'", "column1 DESC");
//使用DataTable.Rows.Remove(DataRow)方法 dt.Rows.Remove(dt.Rows[0]); //使用DataTable.Rows.RemoveAt(index)方法 dt.Rows.RemoveAt(0); //使用DataRow.Delete()方法 dt.Row[0].Delete(); dt.AcceptChanges(); //-----区别和注意点----- //Remove()和RemoveAt()方法是直接删除 //Delete()方法只是将该行标记为deleted,但是还存在,还可DataTable.RejectChanges()回滚,使该行取消删除。 //用Rows.Count来获取行数时,还是删除之前的行数,需要使用DataTable.AcceptChanges()方法来提交修改。 //DataTable在修改行中存储的值时维护各个阶段的值,包括当前值、原始值和默认值。 //如果要删除DataTable中的多行,应该采用倒序循环DataTable.Rows,而且不能用foreach进行循环删除,因为正序删除时索引会发生变化,程式发生异常,很难预料后果。 for (int i = dt.Rows.Count - 1; i >= 0; i--) { dt.Rows.RemoveAt(i); }
//克隆表,只是复制了表结构,不包括数据
DataTable dtNew = new DataTable();
dtNew = dt.Clone();
//复制表,同时复制了表结构和表中的数据
DataTable dtNew = new DataTable();
dtNew = dt.Copy();
dtNew.Clear() //清空数据
dtNew.Rows.Clear();//清空表数据
dtNew.ImportRow(dt.Rows[0]);//将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值
C# DataTable 详解-博客园
DataTable-微软官方文档
下一次,世界精彩处见!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。