改变数据表内容的高效方法

时间:2015-08-24 13:54:55

标签: c# .net performance datatable

我有一个5000行以上的数据表。

对于某些列,我必须更改值。 (123; #Name - >名称)

我尝试过几种方式,但所有这些都很慢。

明显的变体每行大约需要1秒才能更改值。 就我而言,所有这些都用于分配新值。

foreach (DataRow row in table.Rows)
{
    foreach (var column in replaceColumns)
    {
        row[column] = userRegex.Replace(row[column].ToString(), "$1");
    }
}

我尝试使用一列创建一个新表,只创建更改后的值,并合并这两个表。创建新表非常快。合并两个表的方式要慢。

DataTable dt = new DataTable();
DataColumn dc = new DataColumn("Test2");
dc.DataType = typeof(string);
dt.Columns.Add(dc);
foreach (DataRow row in table.Rows)
{
    dt.Rows.Add(row["Test"]);
}

所以我尝试创建整个表格,因为单列表速度非常快。 嗯,它也没有用。它以可接受的速度开始,但插入的行越多越慢。

var t = table.Clone();
foreach (DataRow row in table.Rows)
{
    var nr = t.NewRow();
    foreach (DataColumn dc in table.Columns)
    {
        if (replaceColumns.Contains(dc.ColumnName))
        {
            nr[dc.ColumnName] = userRegex.Replace(row[dc.ColumnName].ToString(), "$1");
        }
        else
        {
            nr[dc.ColumnName] = row[dc.ColumnName];
        }
    }
    t.Rows.Add(nr);
}

有没有人知道如何显着提高性能?

0 个答案:

没有答案