Список строк в одну строку

Допустим, у вас есть:

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);