2010-04-21 5 views

Répondre

54

Pourquoi ne pas simplement aller avec (String.Join Method)

string joined = String.Join(",", data.ToArray()); 

Mais si elle doit être LINQ, vous pouvez essayer

string joinedLinq = data.Aggregate((i, j) => i + "," + j); 
+3

voir mon avertissement sur Agrégat ci-dessous ... –

+0

String.Join était exactement ce dont j'avais besoin! – Melursus

+4

@Melurus, notez également que nouveau dans .NET 4, l'appel à .ToArray() n'est pas nécessaire, ni qu'il doit être une collection de chaînes. string.Join a une surcharge qui accepte 'IEnumerable '. –

1

Vous pouvez utiliser ensemble lorsque vous devez joindre une liste dans un seul objet agrégé.

string s = ""; 
if(data.Count > 0) 
    s = data.Aggregate((a, b) => a + ',' + b); 
11

Vous pourriez être tenté d'utiliser des agrégats() si vous coller avec LINQ

IList<int> data = new List<int>(); 

data.Add(123); 
data.Add(456); 

var result = data.Select(x => x.ToString()).Aggregate((a,b) => a + "," + b); 

Je ne recommanderais pas ce parce que j'ai découvert la dure ce échouera si la liste contient zéro élément - ou était-ce si elle n'avait qu'un seul élément. J'oublie, mais il échoue tout de même :-)

String.Join(...) is the best way 

Dans l'exemple ci-dessus où le type de données n'est pas une chaîne que vous pouvez faire ceci:

string.Join(",", data.Select(x => x.ToString()).ToArray()) 
+3

Il va lancer si l'énumérable n'a pas d'éléments. Check for count == 0. –

+0

Comme Anthony Pegram a écrit 'String.Join (délimiteur, IEnumerable )' est la meilleure solution dans .NET 4! –

3

Comme Anthony Pegram a écrit String.Join<T>(delimiter, IEnumerable<T>) est le meilleur solution dans .NET 4!

Questions connexes