web-dev-qa-db-fra.com

Utiliser LINQ pour convertir une liste en chaîne CSV

J'ai une liste d'entiers et je veux pouvoir la convertir en une chaîne où chaque nombre est séparé par une virgule.

Jusqu'ici exemple si ma liste était:

1
2
3
4
5

Ma sortie attendue serait: 

1, 2, 3, 4, 5

Est-ce possible d'utiliser LINQ?

Merci

30
lancscoder

Dans .NET 2/3

var csv = string.Join( ", ", list.Select( i => i.ToString() ).ToArray() );

ou (dans .NET 4.0)

var csv = string.Join( ", ", list );
100
tvanfosson

Est-ce ce que vous recherchez?

// Can be int[], List<int>, IEnumerable<int>, ...
int[] myIntegerList = ...;

string myCSV = string.Join(", ", myIntegerList.Select(i => i.ToString()).ToArray());

À partir de C # 4.0, le mumbojumbo supplémentaire n’est plus nécessaire, tout fonctionne automatiquement:

// Can be int[], List<int>, IEnumerable<int>, ...
int[] myIntegerList = ...;

string myCSV = string.Join(", ", myIntegerList);
3
Timwi
string csv = String.Join(", ", list.Select(i=> i.ToString()).ToArray());
2
James Curran
String.Join(", ", list); //in .NET 4.0

et

String.Join(", ", list        
    .Select(i => i.ToString()).ToArray()) //in .NET 3.5 and below
0
Yuriy Faktorovich