两个DataTable的合拼

来源:互联网 发布:djvu阅读器 for mac 编辑:程序博客网 时间:2024/04/25 06:47

最近需要对不同结构的DataTable进行合拼,类似于外连接的方式。

在网上查了一下写法基本上都是循环之类,而我觉得应该对于这种情况C#应该有自己简单的方式。

因此发现了一东西。

首先,我发现网上都是循环做的

这是我的写法:

DataTable dt1=new DataTable();DataTable dt2=new DataTable();dt1.Columns.Add("ID",typeof(Int32));dt1.Columns.Add("Date",typeof(DateTime));dt1.Columns.Add("age",typeof(Int32));dt2.Columns.Add("ID", typeof(Int32));dt2.Columns.Add("Date", typeof(DateTime));dt2.Columns.Add("score", typeof(Int32));
for (int i = 0; i < 10000; i++){    DataRow dr1 = dt1.NewRow();    dr1["ID"] = i;    dr1["Date"] = DateTime.Now.AddDays(i);    dr1["age"] = i;    dt1.Rows.InsertAt(dr1, 0);                   DataRow dr2 = dt2.NewRow();    dr2["ID"] = i;    dr2["Date"] = DateTime.Now.AddDays(i);    dr2["score"] = i;    dt2.Rows.InsertAt(dr2, 0);}

写了下来,觉得这样的确很别扭,而同结构的DataTable记得是Merge的,

在msdn上找了一下Merge的用法。

三个重载方法。第一、二个方法是常用,应该处理结构的DataTable

试试了第三个方法结果,发现别人的确提供了的

 

 dt1.PrimaryKey = new DataColumn[] { dt1.Columns["ID"], dt1.Columns["Date"] };  //这句一定要,不然没办法实现             dt1.Merge(dt2, false, MissingSchemaAction.AddWithKey);

 

同时,我测试了一下两种方式的速度,第二种的确优于第一种。

 

注:这是本人第一次写博客,欢迎指正。

 

0 0