string.Join выбрасывает исключение OutOfMemory - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть список строк, и я хочу объединить их с "" (пробел) между ними, поэтому я использую 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 строк.

Есть ли лучший способ, чем строка. Присоединяйся?

Ответы [ 3 ]

4 голосов
/ 07 декабря 2011

Попробуйте это (и сообщите нам, если вы получите ту же ошибку):

lines.GroupBy(l => l.Code).Select(l => string.Join(" ", l.Select (x => x.Data)));
2 голосов
/ 07 декабря 2011
foreach (var line in lines.GroupBy(p=>p.Code))
{        
    var original = string.Join(" ", line.Select(p=>p.Data));        
}
0 голосов
/ 07 декабря 2011

Класс StringBuild () может объединять строки и не является неизменным.

Вот статья в MSDN, в которой говорится о неизменной строке и о том, как работает StringBuilder. http://msdn.microsoft.com/en-us/library/2839d5h5(v=vs.71).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...