C# DataTable常用函数

515 阅读1分钟
  • 初始化 // 初始化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); image.png