Je suis nouveau sur c # et j'apprécie toute l'aide que je peux obtenir. J'ai ce problème où je veux imprimer tous les éléments dans une liste mais je ne reçois que le dernier élément en sortie. Si j'utilise "+ =" au lieu de "=" j'obtiens tous les éléments sur une seule ligne, ce que je ne préfère pas.
Comment imprimer tous les éléments sur leur propre ligne?
Le code:
public override string ToString()
{
string combindedstring = string.Empty;
foreach (string array in foodDescriptionList)
{
combindedstring = array;
}
return combindedstring;
}
Je suis également nouveau sur ce site. Si quelque chose ne convient pas à ma question, faites-le moi savoir. Merci pour toute l'aide :).
3 Réponses :
Vous pouvez utiliser string.Join () et évitez la boucle tous ensemble.
Utilisez l'option ci-dessous pour placer chaque entrée sur sa propre ligne (en utilisant Environment.NewLine ):
// return list separated by ,
public override string ToString()
{
return string.Join(", ", foodDescriptionList);
}
Le code ci-dessous est une autre option et séparera chaque élément en utilisant un ,:
// return list separated by new line character
public override string ToString()
{
return string.Join(Environment.NewLine, foodDescriptionList);
}
Merci pour votre réponse! Si la première alternative imprime toujours les éléments sur une seule ligne. Puis-je supposer que le problème se situe ailleurs dans mon code?
@wixner comment affichez-vous les données? combien d'articles y a-t-il dans foodDescriptionList ? S'il y a plus d'un élément dans la liste, il doit être affiché sur plusieurs lignes
J'utilise une listbox. Et le nombre d'éléments diffère.
Une listbox a une collection Items . Vous devrez remplir la collection avec votre tableau / liste. Un moyen est listbox.DataSource = foodDescriptionList .
Comment cela fonctionne-t-il si ma liste est dans une classe distincte? Merci pour votre patience.
continuons cette discussion dans le chat .
Vous pouvez utiliser + = et ajouter une nouvelle ligne à la fin, quelque chose comme ceci:
combindedstring + = array + Environment.NewLine;
Le problème est que, à chaque itération de boucle, vous remplacez la valeur précédente, donc à la fin, vous ne prenez que la dernière valeur de la collection. À la place, utilisez StringBuilder et ajoutez-y chaque élément.
public override string ToString()
{
StringBuilder sb = new StringBuilder();
foreach (string array in foodDescriptionList)
{
sb.AppendLine(array); //sb.AppendJoin(", ", array); if you want to add separator
}
return sb.ToString();
}
Il existe de nombreuses solutions, mais celle-ci met l'accent sur le problème de votre code. P >
Essayez ceci: combindedstring + = array;
Quand j'utilise cela, j'obtiens tous les éléments sur une seule ligne. Je souhaite afficher les différents éléments sur leur propre ligne.
Implémentez-vous votre propre collection?
Toutes les réponses sont meilleures que cela mais str + = "\ n" + newStr devrait fonctionner sur votre code. Mais compliqué de vérifier le premier élément pour ne pas avoir de nouvelle ligne.