操作DataTable[asp.net]
在C#中操作DataTable和DataRow:
DataTable在asp.net的程序设计中,占有比较重要的位置。从数据库中取出数据时,通常会使用到SqlDataAdapter,而要把SqlDataAdapter中的数据变为可供Repeater/GridView/DataList等组件使用的DataSource,一般都会把它里面的数据填充入DataSet,变为DataSet中的一张DataTable。事实上,服务器组件使用的数据源,其实质即是DataTable的默认视图。如果持有DataTable,DataSet都可以略去了——如果只有一张DataTable的话,如果有多张,为了管理方便,还是会使用DataSet来统一管理这些表的。
DataTable如此重要,掌据操控它的方法,自然是相当必要的。
下面是常见操作:
1、复制一张表:Copy()
此方法将得到一份一模一样,包含结构和数据的DataTable
2、克隆一张表的数据结构:Clone()
此方法将得到表的结构,但不包含数据。
3、设置主键:PrimaryKey = new DataColumn[] { DataColumn1, DataColumn2...}
从数据库取出的DataTable一般没有主键,只有设置了主键,才能进行Contains(DataRow.ItemArray)的比较,判断表中是否包含某个DataRow
4、历遍DataTable:foreach(DataRow dr in DataTable.Rows)
记住in的后面不是DataTable,而是DataTable.Rows
另外,历遍的过程中,不允许DataRows有变动,即不允许在历遍时删除或新增DataRows到DataTable中!
5、DataTable中的Rows都很忠诚,有了归属之后绝不认二主,即使改变了它的数据也不行!
a. 不能将DataTable1中的Row添加到DataTable2中;
b. 一条独立一DataRow一旦被加入到某DataTable中,它不能再被加入来第二次,即使改变了它所有键的值。
6、把DataTable1中某一行复制到DataTable2中唯一稳键的办法,是进行列值的复制,别妄想用其它更快速的办法。
7、快速获取一个与DataTable具有同样数据结构的DataRow的办法是DataTable.Rows.NewRow()