首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于两个DataTable数据过滤的有关问题

2012-09-03 
关于两个DataTable数据过滤的问题我有两个数据结构一样的两个DataTable(dt1、dt2),dt1有49000多条数据,dt2

关于两个DataTable数据过滤的问题
我有两个数据结构一样的两个DataTable(dt1、dt2),dt1有49000多条数据,dt2有47000多条数据,现在想将dt1中已存在于dt2的数据剔除掉,我写了个方法,耗时4分钟~5分钟,这样正常吗?我之前测试过是30秒左右就可以过滤完的了,不知道为什么现在时间变长了。

我的方法如下:

C# code
foreach (DataRow dr1 in dt1.Rows){    foreach (DataRow dr2 in dt2.Rows)    {         if (dr1["id"].ToString() == dr2["id"].ToString())         {              dr1.Delete();              dr2.Delete();              break;          }     } }dt.AcceptChanges();//


以上是我的方法,请问是我的方法问题导致速度慢吗?还是接近5w条数据的对比耗时就是要这么久吗??

麻烦各位帮忙看下!!!能否再缩短一下时间,我之前测试过好几次都是30多秒就完成的了,现在却变得这么慢

[解决办法]
dt2.AsEnumerable().Except(dt1.AsEnumerable())
[解决办法]
C# code
 DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); var dt3 = from r in dt1.AsEnumerable() where !( from rr in dt2.AsEnumerable() select rr.Field<int>("Id") ).Contains(   r.Field<int>("Id")) select r;
[解决办法]
探讨
dt2.AsEnumerable().Except(dt1.AsEnumerable())

热点排行