关于两个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;
[解决办法]