71 votes

Convertir la liste <string> `une chaîne séparée par des virgules

Existe-t-il un moyen rapide de convertir List<string> en string séparés par des virgules en C #?

Je le fais comme ça mais peut-être y at-il un moyen plus rapide ou plus efficace?

 List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = string.Join(",", ls.ToArray());
 

PS: Recherche sur ce site mais la plupart des solutions sont pour Java ou Python

110voto

Jon Skeet Points 692016

Dans .NET 4 vous n'avez pas besoin de l' ToArray() appelez - string.Join est surchargé d'accepter IEnumerable<T> ou juste IEnumerable<string>.

Il y a potentiellement plus efficace des moyens de le faire avant .NET 4, mais avez-vous vraiment besoin d'eux? Est-ce réellement un goulot d'étranglement dans votre code?

Vous pourriez itérer sur la liste, le travail de la taille finale, d'allouer un StringBuilder exactement de la bonne taille, puis faire la jointure vous-même. De façon à éviter les extra tableau en cours de construction pour peu de raison - mais il ne serait pas d'économiser beaucoup de temps et il serait beaucoup plus de code.

15voto

Anthony Shaw Points 4652

Ce qui suit donnera une liste séparée par des virgules. Assurez-vous d'inclure une instruction using pour System.Linq

 List<string> ls = new List<string>();
ls.Add("one");
ls.Add("two");
string type = ls.Aggregate((x,y) => x + "," + y);
 

donnera un, deux

si vous avez besoin d'un espace après la virgule, changez simplement la dernière ligne en string type = ls.Aggregate((x,y) => x + ", " + y);

0voto

insta Points 2628

C'est ainsi que je préférerais voir si je conservais votre code. Si vous parvenez à trouver une solution plus rapide, cela deviendra très ésotérique et vous devriez vraiment l'enfouir dans une méthode qui décrit ce qu'elle fait.

(ça marche toujours sans ToArray)?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X