Список строк в одну строку
Допустим, у вас есть:
List<string> los = new List<string>();
В этом сумасшедшем функциональном мире мы живем в эти дни, и один из них был бы лучшим для создания одной строки, объединив их:
String.Join(String.Empty, los.ToArray());
StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));
string disp = los.Aggregate<string>((a, b) => a + b);
или Обычный простой StringBuilder foreach
ИЛИ есть ли лучший способ?
Ответы
Ответ 1
Я бы пошел с опцией A:
String.Join(String.Empty, los.ToArray());
Мое рассуждение связано с тем, что для этой цели был написан метод Join. Фактически, если вы посмотрите на Reflector, вы увидите, что для его оптимизации был использован небезопасный код. Другие два также работают, но я думаю, что функция Join была написана для этой цели, и я бы предположил, что она наиболее эффективна. Я мог ошибаться, хотя...
В соответствии с @Nuri YILMAZ без .ToArray()
, но это .NET 4 +:
String.Join(String.Empty, los);
Ответ 2
string.Concat(los.ToArray());
Если вы просто хотите конкатенировать строки, используйте string.Concat() вместо string.Join().
Ответ 3
Если вы используете .net 4.0, вы можете использовать способ сортировки:
String.Join<string>(String.Empty, los);
Ответ 4
String.Join() выполняется довольно быстро, и поскольку у вас уже есть коллекция строк, о которых идет речь, это, пожалуй, лучший выбор. Прежде всего, он кричит: "Я присоединяюсь к списку строк!" Всегда приятно.
Ответ 5
Мое голосование - string.Join
Нет необходимости в оценках лямбда и временных функциях, которые будут созданы, меньше вызовов функций, меньше выталкивания и выскакивания стека.
Ответ 6
los.Aggregate((current, next) => current + "," + next);