Я собираюсь немного обмануть и выкинуть новый ответ на этот вопрос, который, кажется, суммирует лучшее из всего, что здесь есть, вместо того, чтобы вставлять его в комментарий.
Таким образом, вы можете в одну строку это:
List<string> strings = new List<string>() { "one", "two", "three" };
string concat = strings
.Aggregate(new StringBuilder("\a"),
(current, next) => current.Append(", ").Append(next))
.ToString()
.Replace("\a, ",string.Empty);
Редактировать: Вы либо захотите сначала проверить наличие пустого перечислимого, либо добавить .Replace("\a",string.Empty);
в конец выражения. Думаю, я пытался стать слишком умным.
Ответ от @ a.friend может быть немного более производительным, я не уверен, что Replace делает под капотом по сравнению с Remove. Единственное другое предостережение, если по какой-то причине вы хотите объединить строки, заканчивающиеся на \ a, вы потеряете свои разделители ... Я считаю это маловероятным. Если это так, у вас есть другие необычные символы на выбор.