首页 新闻 搜索 专区 学院

C# 将两个DataTable数据合并,有什么高效的算法吗?

0
[已解决问题] 解决于 2012-10-09 10:05

我都是一行一行读取出来插入到另一个表的,感觉这样太慢了,有1000条数据就1000个循环...哪位有好点人办法?

hexllo的主页 hexllo | 菜鸟二级 | 园豆:397
提问于:2012-09-20 15:44
< >
分享
最佳答案
1

datatable 的 Merge 方法就行吧

奖励园豆:5
架构师修行之路 | 菜鸟二级 |园豆:322 | 2012-09-20 16:30

一般都是用这个方法。要不然可以再数据库中就合并到一起,然后返回

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-20 17:04
其他回答(4)
0
dudu | 园豆:38908 (高人七级) | 2012-09-20 15:49
0

DataSetHelper 搜索一下这个东西。

迷路中的路人甲 | 园豆:93 (初学一级) | 2012-09-21 14:37
0

DataSetHelper s实质也是循环的,用merge方法倒是可以,要求两个DT都要有主键

轻舞飞狼 | 园豆:211 (菜鸟二级) | 2012-09-21 14:38
0

这个很简单的,给你一个思路吧,假如有两个数据表,a,b   我们分别将a,b两个表的数据行(即datarow)取出来可以放在数组里面,另外我们再创建一个数据表,前提是这个数据表的表结构一定要和a,b表的表结构相同,例如:a,b两个表里面都有只有id,和name这两个字段,

1.将a,b两表的数据行取出来存入数组d(这个很简单的)

2.创建一个新表c

DataTable dt=new DataTable();

dt.Colums.Add("id");

dt.Colums.Add("name");

----------------------------------------以上是创建表结构----------------------------------------

for(int i=0;i<d.length;i++)

{

DataRow dr=dt.NewRow();

dr=d[i];

dt.Rows.Add(dr);

}

 

思路基本上就是这样,你试试吧,不懂的话再问我

斗天! | 园豆:260 (菜鸟二级) | 2012-10-09 01:06

谢谢你啊,这个方法也很好,不过我试了一下,dataTable.Merge这个速度更快些.

支持(0) 反对(0) hexllo | 园豆:397 (菜鸟二级) | 2012-10-09 10:05

@hexllo: 如果表a有三个字段,表b有5个字段,前三个字段相同。

怎么合并?

 

如果a中的数据已经在b中存在(前三个字段),该条数据不合并。

 

怎么做

支持(0) 反对(0) 猫叔Vincent | 园豆:206 (菜鸟二级) | 2014-08-18 17:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册