Respostas:
Você pode usar String.Join. Se você tiver um List<string>, pode ligar ToArrayprimeiro:
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
No .NET 4, você não precisa ToArraymais, pois há uma sobrecarga String.Joindisso IEnumerable<string>.
Resultados:
John, Anna, Monica
Você também pode fazer isso com o linq, se desejar
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
Embora eu prefira a sintaxe não-linq na resposta do Quartermeister e acho que Aggregatepode executar mais devagar (provavelmente mais operações de concatenação de cadeias).
Aggregateé melhor para operações do tipo Math. Com strings, esta operação é semelhante a for eaching e apenas é anexada a uma string que é muito lenta em ineficiente, porque você está criando uma nova string para cada item que existe na lista.