这次用到了C#中的Datatable,主要是把从数据库中取出的一张表的数据进行合并和对齐,同时处理后的数据要发送到前台进行展示
,所以在进行处理的时候原表的各个列名还要进行保存,首先我在网上找到了相关的向Datatable中插入一行数据的代码,然后进行了修改:
dt.Columns.Add(ss);
dt.Columns.Add("Name");
DataRow dr = dt.NewRow();
object[] objs = { "sd", "dlj" };
dr["ID"] = objs[0];
dr["Name"] = objs[1];
dt.Rows.Add(dr);
首先前两行代码是向dt这个Datatable中添加两个列名,然后新建一个DataRow对象吧,这个DataRow没有具体查过,先这样叫吧,
然后是新建一个object类型的数组,用来存储要添加进去的对象,在这里之所以用Object是因为有时候我们并不知道我们要添加的数据
是什么类型,这样就可以避免出现因为类型不一样而导致的错误,还有就是当我们要插入的数据不一定都是同一类型的时候,我们也可
以用这种方法,但是我感觉这个时候如果不用object我们可以用泛型来代替。
dr["ID"] = objs[0];dr["Name"] = objs[1]; 这两行代码也可以用ItemArray = objs;来代替,只是上面的两行代码可以制定要添加的
某列的数据。
但是这个代码也有一定的问题,比如一次只能插入一行数据,如果再想插入另外一行数据的话,就会提示dr已经是表dt
中的对象,这个时候可以给dt添加一个类似于数据库中ID自增长的主键,不过我感觉这样比较麻烦,要给表dt添加一列
后来我想了另外一种方法就是,用一个for循环每一次循环的时候都创建一个DataRow对象,这样就可以插入多个对象了
代码如下:
//for (int i = 0; i < 3; i++)
//{
// DataRow dr = dt.NewRow();
// object[] objs = { "sd", "dlj" };
// dr["ID"] = objs[0];
// dr["Name"] = objs[1];
// dt.Rows.Add(dr);
//}
哦对了,还有一个就是要把原表的列名原封不动的传过去:
for (int m = 0; m < colum_count; m++)
{
dt.Columns.Add(temp_dt.Columns[m].ColumnName);
}
最近用到的Datatable的操作目前就这样了有!以后再补充吧!