最近用到虚拟表 所以我就整理了一些Datatable的常用用法
//虚拟表DataTable的用法
//创建DataTable
DataTable Table = new DataTable("mytable");//创建一个DataTable对象 Table.CaseSensitive = false;//设置不区分大小写 Table.MinimumCapacity = 100;//设置DataTable初始大小 Table.TableName = "newtable"; //设置DataTable的名称
//向DataTable中添加列
DataColumn Colum = new DataColumn();//创建一个DataColumn Colum = Table.Columns.Add("id", typeof(int));//增加一个列 Colum = Table.Columns.Add("title", typeof(string));//增加一个列
table.Columns.Add("UserName", typeof(System.String));
//设置主键为UserId
table.PrimaryKey = new DataColumn[] { table.Columns["UserId"] };
//创建唯一约束
table.Constraints.Add("PK_UserId",table.Columns["UserId"],true);
Tables.Add(table); //处理自动增长列
DataColumn col = tbl.Columns.Add("OrderID", typeof(int));
col.AutoIncrement = true; //获取或设置一个值,该值指示对于添加到该表中的新行,列是否将列的值自动递增
col.AutoIncrementSeed = -1; //获取或设置其 System.Data.DataColumn.AutoIncrement 属性设置为 true 的列的起始值
col.AutoIncrementStep = -1; //获取或设置其 System.Data.DataColumn.AutoIncrement 属性设置为 true 的列使用的增量
col.ReadOnly = true; //获取或设置一个值,该值指示一旦向表中添加了行,列是否还允许更改
//添加基于表达式的列
table.Columns.Add("ItemTotal", typeof(Decimal), "Quantity*UnitPrice");
//给虚拟表中添加数据
DataRow row =table.NewRow();使用DataTable的NewRow方法创建一个新DataRow对象
row[0]="编号";;//使用索引赋值列
row["UserName"] = "New UserName";;//使用列名赋值列
table.Rows.Add(row);
//调用Rows.Add来添加行
table.Rows.Add("编号","New UserName");增加列
//LoadDataRow方法。此方法类似于被重载的Add方法,利用该方法可以为新的DataRow提供值清单,
//要使用这一方法,在第一个参数中提供一个数组。该数组中的项对应于表中的列。
//第二个参数AccepteChanges控制新DataRow的RowState属性,
//为这一参数传递False值,将会导致新行的RowState为Added
table.LoadDataRow(new object[] { "编号", "New UserName" },false); object[] aValues ={"编号","New UserName"};
table.LoadDataRow(aValues,false);
//修改现有行
//使用Rows集合的Find方法来查找DataTable中的一行,然后改变每一列的值
DataRow row = table.Rows.Find("UserId");
if (row == null) { Console.Write("没有这一列"); } else { row["UserName"] = "new Value"; }
//使用ItemArray属性可用于在一行代码获取或修改多个行值,返回和接受一个数组,其中每一项对应于一列。
//如果希望仅修改行中可用值的一个子集,使用Null或Nothing来指示不希望覆盖DataRow中的列的值
DataRow row = table.Rows.Find("UserId");
if (row == null) { Console.Write("没有这一列"); } else { row.ItemArray = new object[] { null, "New Value" }; } //删除现有行
DataRow row = table.Rows.Find("UserId");
if (row == null) { Console.Write("没有这一列"); } else { table.Rows.Remove(row); //or
table.Rows.RemoveAt(table.Rows.IndexOf(row));
}
//查看是否为空
DataRow rowCustomer;
rowCustomer = table.Rows.Find("id");
if(rowCustomer.IsNull("Phone")) Console.WriteLine("为空"); else Console.WriteLine("不为空"); //赋予空值
rowCustomer["Phone"] = DBNull.Value;
//删除列名
table.Columns.Remove("minArea");
//调整列名
table.Columns["num"].SetOrdinal(1);
|
请发表评论