有没有更好的方法来重新开发这种功能?任何帮助或
建议将不胜感激。
是的,我建议您开始重构代码以使用
StringBuilder
而不是
String
因为循环中的字符串连接相当昂贵。
Using the StringBuilder Class in .NET
:
字符串对象是不可变的。每次你使用其中一种方法
在System.String类中,在内存中创建一个新的String对象,
这就需要为新对象分配新的空间。在
需要对
字符串,与创建新字符串对象相关联的开销可以
代价高昂。System.Text.StringBuilder类可以在
希望在不创建新对象的情况下修改字符串。例如,
使用StringBuilder类可以提高连接时的性能
许多字符串在一个循环中组合在一起。
因此,方法如下:
static string ConvertDataTableToHTMLExtra(DataTable dt)
{
StringBuilder html = new StringBuilder();
html.Append("<table>");
//add header row
html.Append("<thead>");
html.Append("<tr>");
for (int i = 0; i < dt.Columns.Count; i++)
html.Append("<td>").Append(dt.Columns[i].ColumnName).Append("</td>");
html.Append("</tr>");
html.Append("</thead>");
//add rows
for (int i = 0; i < dt.Rows.Count; i++)
{
html.Append("<tr>");
for (int j = 0; j < dt.Columns.Count; j++)
html.Append("<td>").Append(dt.Rows[i][j]).Append("</td>");
html.Append("</tr>");
}
html.Append("</table>");
return html.ToString();
}