Fondamentalement, j'ai une liste avec plusieurs éléments de l'information et je veux une seule boîte de message pour les afficher tous.
Le plus proche que j'ai reçu est une boîte de message pour chaque élément (en utilisant Ce que je veux, c'est l'équivalent de: p> mais évidemment que cela ne fonctionnera pas! Quelle est la bonne façon de faire cela? P> p> foreach code >). P>
5 Réponses :
Vous pouvez tout rejoindre dans une seule chaîne avec Toutefois, si vous n'avez pas accès à .NET 4, vous n'avez pas cette surcharge qui prend un string.join < / code>
: ienumerable
Utilisez le "," code> au lieu du
respiornemental.Newline code>.
Si vous avez .NET 4.0
string s = String.Join(",", list.ToArray());
Vous pouvez également utiliser StringBuilder:
StringBuilder builder = new StringBuilder(); foreach(string str in list) { builder.Append(str.ToString()).AppendLine(); } Messagebox.Show(builder.ToString());
Il y a une surcharge de l'annexe qui prend un paramètre. En utilisant cela rendrait le code plus simple. En outre, il y a une surcharge qui prend un objet et des appels qui y appellent, il n'ya donc aucun besoin de l'appeler vous-même.
Juste pour le plaisir et au cas où vous avez besoin de faire quelque chose comme ça avec des collections non stresses, une version LINQ utilisant agrégat code>, qui est le plus proche de la syntaxe de votre exemple. Ne l'utilisez pas ici, utilisez effectivement
string.join code> dans ce cas, mais gardez à l'esprit que vous avez quelque chose à Linq qui peut faire ce dont vous avez besoin.
MessageBox.Show("List contains: " + list.Aggregate(new StringBuilder(),
(sb,val) => sb.AppendLine(val),
sb => sb.ToString()));
Si vous utilisez agrégat code>, il est préférable d'agréger une chaîne StringBuilder, au lieu d'une chaîne:
.agregistrate (nouveau stringbuilder (), (SB, X) => SB.AppendorLine (x) , sb => sb.tostring ()); code>: p
@Martinho Fernandes: C'est une très bonne suggestion pour une solution très loufaie!
Envisager de passer la liste "contient:" code> au constructeur
stringbuilder code>. Ajouter des parenthèses manquantes à la fin.
Vous devez simplement faire une boucle pour une boucle par exemple:
string total =""; for(int i =0; i<x.count ;i++) { total =total+x[i] +"\n"; } MessageBox.Show(total);