C # Lista a cadena con delimitador

¿Hay una función en C # para convertir rápidamente una colección en cadena y valores separados con delimitador?

Por ejemplo:

List names -> string names_together = "John, Anna, Monica"

Puedes usar String.Join . Si tiene una List , puede llamar primero a ToArray :

 List names = new List() { "John", "Anna", "Monica" }; var result = String.Join(", ", names.ToArray()); 

En .NET 4 ya no necesita ToArray , ya que hay una sobrecarga de String.Join que toma una IEnumerable .

También puede hacer esto con linq si lo desea

 var names = new List() { "John", "Anna", "Monica" }; var joinedNames = names.Aggregate((a, b) => a + ", " + b); 

Aunque prefiero la syntax no lineal en la respuesta de Quartermeister y creo que Aggregate podría realizar operaciones de concatenación de cadenas más lentas (probablemente más).

 List targets = new List(); var InboxChecked = true; var BannerChecked = false; var EmailChecked = true; if (InboxChecked) { targets.Add("Inbox"); } if (BannerChecked) { targets.Add("Banner"); } if (EmailChecked) { targets.Add("Email"); } var index = 0; if (targets.Any()) { var aggregate = targets.Aggregate((s1, s2) => { return ++index == targets.Count - 1 ? s1 + " and " + s2 : s1 + ", " + s2; }); // aggregate.Dump(); } // returns -> Inbox and Email