string.Join抛出OutOfMemory异常

时间:2011-12-06 21:14:56

标签: c# .net string exception

我有一个字符串列表,我想用它们之间的“”(空格)加入它们,所以我使用string.Join方法:

foreach (var line in lines)
{        
    var strings = lines.Where(l => l.Code == line.Code).Select(l => l.Data);
    var original = string.Join(" ", strings);        
}

数据看起来像这样:“123456789,987654321,32132,7873892 ......”

但是我得到了一个OutOfMemoryException。为什么?每个字符串大约有100-150个字符,列表中有5-10个字符串。

有没有比string.Join更好的方法?

3 个答案:

答案 0 :(得分:4)

试试这个(如果你得到同样的错误,请告诉我们):

lines.GroupBy(l => l.Code).Select(l => string.Join(" ", l.Select (x => x.Data)));

答案 1 :(得分:2)

foreach (var line in lines.GroupBy(p=>p.Code))
{        
    var original = string.Join(" ", line.Select(p=>p.Data));        
}

答案 2 :(得分:-1)

StringBuild()类可以连接字符串,但不是不可变的。

这是一篇MSDN文章,讨论了不可变字符串与StringBuilder的工作原理。 http://msdn.microsoft.com/en-us/library/2839d5h5(v=vs.71).aspx