2010-11-24 28 views
1

j'ai essayé d'ajouter les éléments dans un List<string> à un StringBuilder avec Linq:Liste Append articles à stringbuilder

items.Select(i => sb.Append(i + ",")); 

A trouvé une question similaire here ce qui explique pourquoi le ne fonctionne pas, mais je ne pouvais » t trouver un Each de ForEach ou quelque chose de similaire sur List que je pourrais utiliser à la place.

Existe-t-il une façon simple de le faire dans une seule doublure?

+0

Quelle version de .Net utilisez-vous? ForEach est une méthode sur la liste générique dans .Net 4. –

+0

oui je suis .Net 3.5 malheureusement – fearofawhackplanet

Répondre

3

Comment utiliser une simple boucle foreach. De cette façon, vous avez des instructions qui modifient StringBuilder, au lieu d'utiliser une expression avec des effets secondaires.

Et peut-être votre problème est mieux résolu avec String.Join(",", items)

+2

J'avais complètement oublié 'String.Join'. Parfois, j'ai vraiment besoin de sortir de mon wikathon Linq et de me rappeler comment les gens ont programmé avant :) – fearofawhackplanet

1

Essayez ceci:

http://www.extensionmethod.net/Details.aspx?ID=297

Il y a quelques autres exemples foreach sur ce site si le ne fonctionne pas pour vous ci-dessus.

EDIT:

Je ne sais pas si cela dépend de la version de .NET frameowkr que vous avez, mais je viens d'essayer

var list = new List<int>(); 

list.ForEach(i => Console.WriteLine(i)); 

dans une application console .NET 4.0, et cela a fonctionné bien.

+0

+1 pour la suggestion de méthode d'extension. – fearofawhackplanet

6
items.ForEach(item => sb.Append(item + ",")); 
+0

Notez que vous devez vous accrocher à une liste non IList où cette extension n'est plus disponible. C'est pourquoi je préfère écrire mon propre ForEach qui fonctionne sur IEnumerable . – Tigraine