Вы хотите использовать метод string.Join
, который существует в BCL для этой цели.
Пример:
var myArray = new string[] { "one", "two", "three" };
var output = string.Join(", ", myArray);
Или, если вы используете .NET 3.5, вы можете сделать это с любым IEnumerable<string>
следующим образом:
var output = string.Join(", ", myEnumerable.ToArray());
(Обратите внимание, что это не дает наилучшей производительности, как это требуется, хотя, очевидно, оно по-прежнему равно 'O (n)' и должно подходить почти для всех случаев).
Теперь, если ваш перечисляемый тип не имеет типа string
(обычно IEnumerable<T>
), вы можете просто использовать метод Select
для преобразования результата в строку, например,
var output = string.Join(", ", myEnumerable.Select(e => e.ToString()).ToArray());
Я не уверен, что вы имеете дело со значениями, которые потенциально могут содержать запятые в себе, но это можно обойти, заключив их в кавычки ("
) и экранируя кавычки, аналогично формату CSV.
var output = string.Join(", ", items.Select(x => x.Contains(",") ?
"\"" + x.Replace("\"", "\"\"") + "\"" : x);
Конечно, разделить их снова - это задача немного сложнее, требующая регулярных выражений.