比较两个数据表并设置其值

时间:2018-03-14 08:53:00

标签: c# performance datatable compare

我有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或其他人。任何以与此相同的方式工作的例子都是值得欣赏的。谢谢

1 个答案:

答案 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]);
}