por - C#List<string> a cadena con delimitador
split string c# string delimiter (3)
¿Existe una función en C # para convertir rápidamente alguna colección en cadena y valores separados con delimitador?
Por ejemplo:
List<string> names
-> string names_together = "John, Anna, Monica"
Puedes usar String.Join
. Si tiene una List<string>
entonces puede llamar a ToArray
primero:
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
En .NET 4 ya no necesita el ToArray
, ya que hay una sobrecarga de String.Join
que toma una IEnumerable<string>
.
También puedes hacer esto con linq si quieres
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
Aunque prefiero la sintaxis no-linq en la respuesta de Quartermeister y creo que Aggregate
podría tener un rendimiento más lento (probablemente más operaciones de concatenación de cadenas).
List<string> targets = new List<string>();
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