Existe-t-il une fonction en C # pour convertir rapidement une collection en chaîne et séparer les valeurs avec un délimiteur?
Par exemple:
List<string> names
-> string names_together = "John, Anna, Monica"
Vous pouvez utiliser String.Join
. Si vous en avez un, List<string>
vous pouvez d' ToArray
abord appeler :
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
Dans .NET 4, vous n'en avez plus besoin ToArray
, car il y a une surcharge String.Join
qui prend un IEnumerable<string>
.
Résultats:
John, Anna, Monica
Vous pouvez également le faire avec linq si vous le souhaitez
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
Bien que je préfère la syntaxe non-linq dans la réponse de Quartermeister et je pense que cela Aggregate
pourrait fonctionner plus lentement (probablement plus d'opérations de concaténation de chaînes).
Aggregate
c'est mieux pour les opérations de type mathématique. Avec les chaînes, cette opération est similaire àfor each
ing et juste ajoutée à une chaîne qui est très lente et inefficace car vous créez une nouvelle chaîne pour chaque élément qui existe dans la liste.