Créer une liste séparée par des virgules à partir d'IList<string> ou IEnumerable<string>

Créer une liste séparée par des virgules à partir d’IList ou IEnumerable


Source : Stack Overflow.)

.NET 4+

IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);

Détails et solutions pré .Net 4.0

IEnumerable<string> peut être converti en 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 auxiliaire équivalente si vous en avez besoin :

public static T[] ToArray(IEnumerable<T> source)
{
    return new List<T>(source).ToArray();
}

Puis appelez-la comme ceci :

IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);

Vous pouvez ensuite appeler string.Join. Bien sûr, vous n’êtes pas obligé d’utiliser une méthode auxiliaire :

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

La dernière est un peu lourde quand même :slight_smile:

C’est probablement la manière la plus simple de le faire, et assez performante aussi - il y a d’autres questions sur les performances exactes, y compris (mais sans s’y limiter) celle-ci.

À partir de .NET 4.0, il y a plus de surcharges disponibles dans string.Join, donc vous pouvez en fait simplement écrire :

string joined = string.Join(",", strings);

Beaucoup plus simple :slight_smile: