我有一个字符串列表,我想用它们之间的“”(空格)加入它们,所以我使用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更好的方法?
答案 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