-
初始化 // 初始化datatable,并指定表名为TableName,TableName可以不指定 DataTable dt = new DataTable("TableName"); // 指定表名为TableName dt.TableName = "TableName";
-
列处理
// 添加列,忽略大小写,并且指定该列的数据类型;数据类型设置可忽略,默认是string(实际上在datatable中所有值应该都是string形式) dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Note"); // 修改DataTable的列名 dt.Columns["Id"].ColumnName = "Key"; // 删除列 dt.Columns.Remove("Note");
- 行处理 // 新增一行数据,按照Columns顺序赋值,ItemArray的每一项,与Columns一一对应; DataRow dr = dt.NewRow(); dr.ItemArray = new object[] { 1,"P1", "P2" }; dt.Rows.Add(dr);
ItemArray数组长度大于dt.Columns的数量,触发以下错误: System.ArgumentException:“输入数组长度大于此表中的列数。”
ItemArray数组长度小于dt.Columns的数量,后续属性的值为空;
ItemArray数据项的类型与dt.Columns的类型不一致,触发以下错误(以string转int失败为例): System.ArgumentException:“输入字符串的格式不正确。不能在 Id 列中存储 <33x>。所需类型是 Int32。”
// 新增一行数据,指定属性进行赋值,其他属性为空值; DataRow dr2 = dt.NewRow(); dr2["Name"] = "the name"; dt.Rows.Add(dr2);
-
数据编辑 // 设置表特定行、列的值。 dt.Rows[i].SetField(dc, int.Parse(hc.Values[i]);
-
拷贝
// 拷贝表格的一部分列,新的表格列排序以入参columnNames为准,自带去重处理; DataTable dt2 = dt.DefaultView.ToTable(distinct: false, columnNames: new string[] {"Id", "Name" });
// 复制表 DataTable dt2 = dt.Clone();
// 合并表,将dt2的数据追加到dt之后;合并后dt的列名是dt和dt2列名的并集
dt.Merge(dt2);