web-dev-qa-db-fra.com

Convertir `List <string>` en chaîne séparée par des virgules

Existe-t-il un moyen rapide de convertir List<string> en une string séparée 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

65
Ozkan

Dans .NET 4, vous n'avez pas besoin de l'appel ToArray() - string.Join est surchargé pour accepter IEnumerable<T> ou simplement IEnumerable<string>.

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

Vous pourriez parcourir la liste, calculer la taille finale, allouer une StringBuilder de taille exacte, puis faire la jointure vous-même. Cela éviterait que le tableau supplémentaire soit construit pour peu de raisons - mais cela ne ferait pas gagner beaucoup de temps et ce serait un lot plus de code.

103
Jon Skeet

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);

14
Anthony Shaw

Pour en savoir plus, Jon Skeets répond que le code correspondant dans .Net 4 est le suivant:

string myCommaSeperatedString = string.Join(",",ls);
8
user1

Suivez ceci:

       List<string> name = new List<string>();   

        name.Add("Latif");

        name.Add("Ram");

        name.Add("Adam");
        string nameOfString = (string.Join(",", name.Select(x => x.ToString()).ToArray()));
3

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)?

0
Bryan Boettcher
static void Main(string[] args)
{
   List<string> listStrings = new List<string>(){ "C#", "Asp.Net", "SQL Server", "PHP", "Angular"};
   string CommaSeparateString = GenerateCommaSeparateStringFromList(listStrings);
   Console.Write(CommaSeparateString);
   Console.ReadKey();
}

private static string GenerateCommaSeparateStringFromList(List<string> listStrings)
{
   return String.Join(",", listStrings);  
}

Convertit une liste de chaînes en chaînes C # séparées par des virgules.

0
hitesh kumar