【发布时间】:2019-12-25 11:57:24
【问题描述】:
我正在尝试通过 foreach 循环(行和列)将数据从 DataTable 填充到 Dataset。
我看到每一轮,时间都在增长。
foreach (DataRow row in dt.Rows)
{
stopwatch.Start();
ds.Namespace = "http://www.schema.co";
stdTable = new DataTable("param");
col1 = new DataColumn("key");
col2 = new DataColumn("value");
stdTable.Columns.Add(col1);
stdTable.Columns.Add(col2);
ds.Tables.Add(stdTable);
foreach (DataColumn col in dt.Columns)
{
stopwatchcolumn.Start();
DataRow newRow;
newRow = stdTable.NewRow();
newRow["key"] = col.ColumnName;
if (col.DataType == typeof(DateTime))
{
newRow["value"] = DateTime.Parse(row[col].ToString()).ToString("dd/MM/yyyy HH:mm:ss");
}
else
{
newRow["value"] = row[col].ToString();
}
stdTable.Rows.Add(newRow);
newRow = stdTable.NewRow();
stopwatchcolumn.Stop();
mainLog.WrLInfo("ELAPSED COLUMNS", stopwatchcolumn.Elapsed.ToString());
}
stopwatch.Stop();
mainLog.WrLInfo("ELAPSED", stopwatch.Elapsed.ToString());
ds.AcceptChanges();
}
[已过的列] 00:00:00.0011310
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0011394
2019-08-20 12:50:05 信息:
[已用列] 00:00:00.0011510
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0011608
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0011701
2019-08-20 12:50:05 信息:
[已用列] 00:00:00.0011789
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0011910
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0011999
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0012306
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0012399
2019-08-20 12:50:05 信息:
[已用列] 00:00:00.0012492
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0012604
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0012697
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0012786
2019-08-20 12:50:05 信息:
[已用列] 00:00:00.0012888
2019-08-20 12:50:05 信息:
[已过的列] 00:00:00.0013158
【问题讨论】:
-
你知道
if (col.DataType == typeof(DateTime)) x = DateTime.Parse(row[col].ToString()).ToString("dd/MM/yyyy HH:mm:ss")是多余的吗?和铸造就足够了吗?
标签: c# foreach datatable datacolumn