.NET 4+
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
Solutions détaillées et pré .Net 4.0
IEnumerable<string>
peut être converti en un tableau de chaînes de caractères très facilement avec LINQ (.NET 3.5) :
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
Il est assez facile d'écrire la méthode d'aide équivalente si vous en avez besoin :
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
Alors appelez-le comme ça :
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
Vous pouvez alors appeler string.Join
. Bien sûr, vous n'avez pas ont pour utiliser une méthode d'aide :
// C# 3 and .NET 3.5 way:
string joined = string.Join(",", strings.ToArray());
// C# 2 and .NET 2.0 way:
string joined = string.Join(",", new List<string>(strings).ToArray());
Ce dernier point est un peu difficile à comprendre :)
Il s'agit probablement de la manière la plus simple de procéder, et elle est également très performante. D'autres questions se posent quant aux performances exactes, notamment (mais pas exclusivement) les suivantes celui-ci .
Depuis la version 4.0 de .NET, il existe davantage de surcharges disponibles dans le module string.Join
pour que tu puisses écrire :
string joined = string.Join(",", strings);
Beaucoup plus simple :)
5 votes
Oh... Oups. J'ai manqué l'ajout de la méthode d'extension ToArray en 3.5 :
public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source)
2 votes
Si vous êtes venu à cette question en cherchant un moyen d'écrire des CSV, il est bon de rappeler que le simple fait d'insérer des virgules entre les éléments est insuffisant et entraînera un échec dans le cas de guillemets et de virgules dans les données sources.