Есть ли в C # функция для быстрого преобразования некоторой коллекции в строку и разделения значений с помощью разделителя?
Например:
List<string> names
-> string names_together = "John, Anna, Monica"
Вы можете использовать String.Join
. Если у вас есть, List<string>
то вы можете позвонить ToArray
сначала:
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
В .NET 4 вам больше не нужно ToArray
, так как есть перегрузка, String.Join
которая требует IEnumerable<string>
.
Результаты:
Джон, Анна, Моника
Вы также можете сделать это с linq, если хотите
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
Хотя я предпочитаю синтаксис non-linq в ответе Quartermeister и думаю, что он Aggregate
может работать медленнее (возможно, больше операций конкатенации строк).
Aggregate
лучше для операций типа Math. В случае со строками эта операция аналогичнаfor each
вставке и добавлению строки, которая очень медленно работает неэффективно, поскольку вы создаете новую строку для каждого элемента, который существует в списке.