我在我的ASP.NET Web服务项目中有一个数据表,这个数据表有大约500K条记录,它有39列,存在于缓存中。 一分钟后在后台线程访问数据库,汇集了来自数据库的更新记录,我想在缓存数据表进行更新,我使用下面的方法,但它正在好足够的时间来做到这一点:从另一个数据表更新数据表中的数据的有效方法
foreach (DataRow dRNew in dtNew.Rows)
{
DataRow row = dtOriginal.Select("ID=" + dRNew["ID"]).First();
row["Column1"] = dRNew["Column1"];
row["Column2"] = dRNew["Column2"];
row["Column3"] = dRNew["Column3"];
}
我已经取代了以下行:
DataRow row = dtOriginal.Select("ID=" + dRNew["ID"]).First();
与
DataRow row = dtOriginal.AsEnumerable().Where(r => ((Int64)r["ID"]).Equals(dRNew["ID"])).First();
但不成功,它正在像我的笔记本电脑约5分钟。
任何人都可以请指导我在哪里,我做错了什么?使用哪种方法可以有效地进行,我不确定是否可以使用Dataset.Merge
或其他方法。
SCNR ...'[...]数据表[...] 500K记录它与39列存在于Cache中“让我立即笑了起来......数据表+缓存+ foreach +多线程+ ...... **血腥真棒**!你一定是查克·诺里斯... – 2012-07-18 12:44:12
:)可能对你很有趣,但在我的情况下,它是这样的,所以让我们一起笑吧:D – 2012-07-18 12:47:10
其实我笑,因为env你正在追捕_really_伤害......在这种情况下,没有一种高性能/实用的解决方案。我宁愿从一个基本问题开始:为什么你必须将值存储在某个地方?你在做什么?给我们一个更大的图片! ... – 2012-07-18 12:49:13