Я использую следующее расширение:
public static String ToSeparatedString<T>(this IEnumerable<T> source, String separator)
{
return String.Join(separator, source.Select(e => e.ToString()).ToArray());
}
В случае, когда вам нужно получить что-то отформатированное:
public static String ToSeparatedString<T>(this IEnumerable<T> source, String separator, String format)
{
return String.Join(separator, source.Select(e => String.Format(format, e)).ToArray());
}
Пример использования
var myList = new List<String> {"a", "b", "c"};
String result = myList.ToSeparatedString(",", "[{0}]");
// result is "[a],[b],[c]" here