我有2个数据表,我只需要比较一个列单元格值。检查它是否等于然后获取dt2的单元格值并将其设置为dt。到目前为止我得到了什么。它按预期工作,但由于两个数据表都有大量条目,因此花费了很长时间。
foreach (DataRow row in dt.Rows)
{
foreach (DataRow row2 in dt2.Rows)
{
if (row[0].ToString().Equals(row2[0].ToString()))
{
row[1] = row2[1];
row[68] = row2[59];
}
}
}
我如何提高性能呢?我没有足够的经验来使用和了解linq或其他人。任何以与此相同的方式工作的例子都是值得欣赏的。谢谢
答案 0 :(得分:1)
也许这种LINQ方法更快一些,因为它是一种基于集合的方法:
var updateRows = from r1 in dt.AsEnumerable()
join r2 in dt2.AsEnumerable()
on r1.Field<string>(0) equals r2.Field<string>(0)
select new { r1, r2 };
foreach(var x in updateRows)
{
x.r1.SetField(1, x.r2[1]);
x.r1.SetField(68, x.r2[59]);
}