【问题标题】:Concatenating List<List<string>> takes a long time [duplicate]连接 List<List<string>> 需要很长时间[重复]
【发布时间】:2018-02-06 17:26:07
【问题描述】:

到目前为止我所尝试的

string Value ="";
foreach (List<string> val in L1)
{
   Value = Value + string.Join(",", val) + " // ";
}

其中 L1 的数据类型为 List &lt;List&lt;strings&gt;&gt;

这可行,但需要将近 n 个半小时才能完成 是否有尽可能多的最快和简单的方法来实现这一点。

【问题讨论】:

  • 列表的大小是多少?..
  • 如果你得到大量的字符串,这会占用大量内存并且需要大量时间来处理,你可能应该将你的例程更改为流式传输文本,然后对其执行一些操作
  • 实际上我有 List 等于 List>>>
  • L1List&lt;List&lt;string&gt;&gt; 时,此循环将抛出InvalidCastException,因为您将val 声明为List&lt;decimal&gt;
  • 修复 ^ 后,开始使用 StringBuilder 将运行时间缩短一半以上。

标签: c# asp.net string-concatenation


【解决方案1】:

我建议在这样的循环中使用 StringBuilder 而不是串联:

StringBuilder builder = new StringBuilder();
foreach (List<string> val in L1)
{
    builder.Append(string.Join(",", val) + " // ");
}
string result = builder.ToString();

在循环中连接时,每次都需要将字符串复制到内存中的新位置,并分配额外的内存。 StringBuilder 防止这种情况发生。

也可以参考:

【讨论】:

  • @SimarjeetSinghPanghlia - 不客气 :)
猜你喜欢
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多