LINQ: Comment concaténer une liste d'entiers en délimitée par des virgules de la chaîne?
C'est probablement quelque chose de stupide je l'ai raté, mais j'essaie de concaténer une liste d'entiers au lieu d'additionner avec:
integerArray.Aggregate((accumulator, piece) => accumulator+"," + piece)
Le compilateur se plaint à propos de l'argument de l'erreur. Est-il un habile moyen de le faire sans avoir à passer par une boucle?
Vous devez vous connecter pour publier un commentaire.
La version de .NET? Dans la version 4.0, vous pouvez utiliser
string.Join(",",integerArray)
. En 3.5, je serais tenté d'utiliserstring.Join(",",Array.ConvertAll(integerArray,i=>i.ToString()));
(en supposant qu'il est un tableau). Sinon, soit faire il un tableau, ou d'utiliserStringBuilder
.Array
type pour commencer, est-il une différence de vitesse entreArray.ConvertAll(list.ToArray(),...)
contreIEnumerable.Select(...).ToArray()
?L'erreur que vous obtenez est parce que vous n'avez pas d'utiliser le remplacement de
Aggregate
qui vous permet de spécifier la valeur de départ. Si vous ne spécifiez pas de la graine, il utilise le type de la collection.integerArray.First() + integerArray.Skip(1).Aggregate("", (accumulator, piece) => accumulator + "," + piece);
Vous voudrez probablement utiliser Chaîne de caractères.Rejoindre.
Si vous êtes en utilisant .Net 4.0, vous n'avez pas besoin de passer par les tracas de la chosification d'un tableau. et peut juste faire
Juste pour ajouter une autre alternative à @Marc