Quelle est la façon la plus propre de créer une liste de valeurs de chaîne séparées par des virgules à partir d'une IList<string>
ou d'une IEnumerable<string>
?
String.Join(...)
opère sur une string[]
et peut donc être difficile à utiliser lorsque des types tels que IList<string>
ou IEnumerable<string>
ne peuvent pas être facilement convertis en un tableau de chaînes.
.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 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();
}
Puis l'appeler comme ceci :
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
Vous pouvez alors appeler string.Join
. Bien sûr, vous n'êtes pas obligé d'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 cependant un peu long :)
Il s'agit probablement de la manière la plus simple de procéder, et elle est également très performante - il existe d'autres questions sur les performances exactes, notamment (mais pas uniquement) [celle-ci][1].
Depuis .NET 4.0, il y a plus de surcharges disponibles dans [string.Join
][2], donc vous pouvez simplement écrire :
string joined = string.Join(",", strings);
Beaucoup plus simple :)
[1] : https://stackoverflow.com/questions/219519/whats-the-c-method-syntax-for-converting-an-array-to-a-simple-string [2] : http://msdn.microsoft.com/en-us/library/system.string.join
Vous pouvez utiliser .ToArray()
sur les Listes
et les IEnumerables
, puis utiliser String.Join()
comme vous le souhaitez.