日期:2013-11-10  浏览次数:20466 次

我们在一个DataSet中可以包含多个DataTable对象。

DataSet myDataSet = new DataSet();
DataTable tableA = new DataTable("A");
DataTable tableB = new DataTable("B");

myDataSet.Tables.Add(tableA);
myDataSet.Tables.Add(tableB);

这样在myDataSet中就包含了一个tableA和一个tableB两个DataTable对象,同时我们是通过DataSet.Tables的属性访问DataSet中包含的DataTable,例如可以通过这样语句:myDataSet.Tables["A"]来访问tableA对象。但是DataTableCollection的索引器(其实DataSet.Tables就是DataTableCollection类型)只能用户获取一个DataTable对象,无法设置。

myDataSet.Tables["A"] = myDataSet.Tables["B"]; //错误的语法

这样的语句在编译的时候会出错。那么我们怎样重新设置一个tableA呢?重新在声明一个DataTable对象,再将tableB Copy给新的DataTable对象,

DataTable newTable;
newTable = myDataSet.Tables["B"].Copy();

此时newTable中的结构和数据和tableB是一样的。但是我们怎样将newTable copy给tableA呢?试一下下面的代码

newTable.TableName = "A";
myDataSet.Tables.Remove("A");
myDataSet.Tables.Add(newTable):
将原来的tableA从DataSet中移除,newTable的名称设置为tableA的名称,并将newTable加入到DataSet中,这样我们就可以获得一个新的tableA