C# ASP.Net/C中的循环优化#
我编写了一个循环来显示字符串列表中的每一行。 问题是列表包含45000多行,创建用于显示的页面需要花费大量时间 有人能帮助优化代码吗C# ASP.Net/C中的循环优化#,c#,asp.net,optimization,C#,Asp.net,Optimization,我编写了一个循环来显示字符串列表中的每一行。 问题是列表包含45000多行,创建用于显示的页面需要花费大量时间 有人能帮助优化代码吗 List<string> OverrrideLog = lc.getOverrideLog(); List<string> AccessLog = lc.getAccessLog(); foreach (string s in OverrrideLog) lblOve
List<string> OverrrideLog = lc.getOverrideLog();
List<string> AccessLog = lc.getAccessLog();
foreach (string s in OverrrideLog)
lblOverrideLog.Text += s + "<br/>";
foreach (string s in AccessLog)
lblAccessLog.Text += s + "<br/>";
List overridelog=lc.getOverrideLog();
List AccessLog=lc.getAccessLog();
foreach(overridelog中的字符串s)
lblOverrideLog.Text+=s+“
”;
foreach(AccessLog中的字符串s)
lblAccessLog.Text+=s+“
”;
这里的lblOverrideLog和lblAccessLog是文本,每个列表有22000多行。您应该使用一个
像您这样连接字符串会在内存中创建数千个临时字符串。未经测试,但请尝试以下操作:
List<string> OverrrideLog = lc.getOverrideLog();
List<string> AccessLog = lc.getAccessLog();
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
foreach(var el in OverrrideLog)
{
sb.Append(el);
sb.Append(" <br />");
}
foreach(var el in AccessLog)
{
sb2.Append(el);
sb2.Append(" <br />");
}
lblOverrideLog.Text = sb.ToString();
lblAccessLog.Text = sb2.ToString();
List overridelog=lc.getOverrideLog();
List AccessLog=lc.getAccessLog();
StringBuilder sb=新的StringBuilder();
StringBuilder sb2=新的StringBuilder();
foreach(在Overridelog中的var el)
{
某人追加(el);
sb.追加(“
”);
}
foreach(AccessLog中的变量el)
{
sb2.追加(el);
sb2.追加(“
”);
}
lblOverrideLog.Text=sb.ToString();
lblAccessLog.Text=sb2.ToString();
编辑:
woops,对于exsample,将val
替换为var
OverrrideLog.ForEach(x=>{
if (sbOverrideLog.Length > 0)
sbOverrideLog.Append("<br />");
sbOverrideLog.Append(x);
});
AccessLog.ForEach(x =>
{
if (sbAccessLog.Length > 0)
sbAccessLog.Append("<br />");
sbAccessLog.Append(x);
});
overridelog.ForEach(x=>{
如果(sbelog.Length>0)
sbOverrideLog.Append(“
”);
sbelog.Append(x);
});
AccessLog.ForEach(x=>
{
如果(sbAccessLog.Length>0)
sbAccessLog.Append(“
”);
sbAccessLog.Append(x);
});
您可以使用该方法(字符串,IEnumerable):
List overridelog=lc.getOverrideLog();
List AccessLog=lc.getAccessLog();
lblOverrideLog.Text=String.Join(“
”,overridelog);
lblAccessLog.Text=String.Join(“
”,AccessLog);
(另请参见)使用
StringBuilder
!使用String.Join方法(String,String[])
@CD-No,String.Join方法(String,IEnumerable)。他已经有了一个
列表`xanatos:是的,你是对的..读这篇文章乔治,对不起:我把你的评论删掉,开始写答案。。。但是你是第一个,所以你希望我删除我的答案吗?:)非常感谢:)我用了这个,还有一个是斯布雷克勒回答的。两个都工作得很好!诚然,我不知道String.Join
以这种方式+1谢谢:)我用了这个和CD回答的那个。两者都很好
List<string> OverrrideLog = lc.getOverrideLog();
List<string> AccessLog = lc.getAccessLog();
lblOverrideLog.Text = String.Join("<br />", OverrrideLog);
lblAccessLog.Text = String.Join("<br />", AccessLog);