我有一个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);
}
有没有人知道如何显着提高性能?