voulez-vous dire string combindedString = string.Join (",", myList.ToArray ());
sawe
2
Argument '2': impossible de convertir de 'System.Collections.Generic.List <string>' en 'string []'
Ash
9
Je l'ai utilisé récemment, cela fonctionne - omettez simplement le .ToArray ()
Adrian K
3
@AdrianK vous avez raison car le .Net 4.0 a ajouté la possibilité de transmettre n'importe quelle <string> IEnumerable. Cependant, la version 4.0 a été publiée en avril 2010, avant que cette question et cette réponse ne soient publiées, donc peut-être que les gens ici n'en étaient tout simplement pas encore au courant (à part quelques-uns ci-dessous)
Andrew Steitz
Pour vb.net, Dim combindedString As String = String.Join (",", myList.ToArray ())
PartTimeNerd
55
Je vais suivre mon instinct et supposer que vous voulez concaténer le résultat de l'appel ToStringà chaque élément de la liste.
Utilisez Aggregate avec une valeur de départ comme premier paramètre pour éviter de lancer une exception InvalidOperationException pour les collections vides.
Huacanacha
13
String.Join(" ", myList)ou String.Join(" ", myList.ToArray()). Le premier argument est le séparateur entre les sous-chaînes.
var myList =newList<String>{"foo","bar","baz"};Console.WriteLine(String.Join("-", myList));// prints "foo-bar-baz"
Selon votre version de .NET, vous devrez peut-être d'abord utiliser ToArray () dans la liste.
La .ToString()méthode des types référence est généralement résolue à System.Object.ToString()moins que vous ne la remplaciez dans un type dérivé (éventuellement en utilisant des méthodes d'extension pour les types intégrés). Le comportement par défaut de cette méthode consiste à afficher le nom du type sur lequel elle est appelée. Donc, ce que vous voyez est un comportement attendu.
Vous pouvez essayer quelque chose comme string.Join(", ", myList.ToArray());pour y parvenir. C'est une étape supplémentaire, mais cela pourrait être mis dans une méthode d'extension pour le System.Collections.Generic.List<T>rendre un peu plus facile. Quelque chose comme ça:
cela fonctionne quand je ne l'appelle pas ToString ou que je l'exécute avec un paramètre générique. Mais j'aime votre idée d'utiliser la méthode d'extension :)
IAdapter
4
C'est difficile à dire, mais vous cherchez peut-être quelque chose comme:
var myString =String.Join(String.Empty, myList.ToArray());
Cela appellera implicitement la méthode ToString () sur chacun des éléments de la liste et les concaténera.
Si vous cherchez à faire tourner les éléments d'une liste dans une grande chaîne longue, faites ceci: String.Join("", myList). Certaines anciennes versions de l'infrastructure ne vous permettent pas de passer un IEnumerable comme deuxième paramètre, vous devrez donc peut-être convertir votre liste en tableau en appelant .ToArray ().
dans le code de production, assurez-vous que votre liste contient un élément, sinon elle lèvera une exception.
AZ_
1
Cette méthode m'a aidé en essayant de récupérer des données à partir d'un fichier texte et de les stocker dans Array, puis de les affecter à une chaîne variable.
Réponses:
Peut-être que vous essayez de faire
Vous pouvez remplacer "," par ce que vous voulez diviser les éléments de la liste.
Edit : Comme mentionné dans les commentaires, vous pouvez également le faire
Référence:
la source
Je vais suivre mon instinct et supposer que vous voulez concaténer le résultat de l'appel
ToString
à chaque élément de la liste.la source
Vous pouvez utiliser
string.Join
:Le résultat serait:
Au lieu de cela
Environment.NewLine
, vous pouvez le remplacer par un séparateur de ligne basé sur une chaîne de votre choix.la source
Si vous voulez quelque chose d'un peu plus complexe qu'une simple jointure, vous pouvez utiliser LINQ par exemple
Prendra ["A", "B", "C"] et produira "(a) (b) (c)"
la source
String.Join(" ", myList)
ouString.Join(" ", myList.ToArray())
. Le premier argument est le séparateur entre les sous-chaînes.Selon votre version de .NET, vous devrez peut-être d'abord utiliser ToArray () dans la liste.
la source
Vous avez un
List<string>
- donc si vous voulez qu'ils soient concaténés, quelque chose commefonctionnerait (au moins dans .NET 4.0). Le premier paramètre est le délimiteur. Ainsi, vous pouvez également délimiter par des virgules, etc.
Vous pouvez également envisager d'utiliser StringBuilder pour exécuter des concaténations, plutôt que de former une liste.
la source
La
.ToString()
méthode des types référence est généralement résolue àSystem.Object.ToString()
moins que vous ne la remplaciez dans un type dérivé (éventuellement en utilisant des méthodes d'extension pour les types intégrés). Le comportement par défaut de cette méthode consiste à afficher le nom du type sur lequel elle est appelée. Donc, ce que vous voyez est un comportement attendu.Vous pouvez essayer quelque chose comme
string.Join(", ", myList.ToArray());
pour y parvenir. C'est une étape supplémentaire, mais cela pourrait être mis dans une méthode d'extension pour leSystem.Collections.Generic.List<T>
rendre un peu plus facile. Quelque chose comme ça:(Notez qu'il s'agit de code libre et non testé. Je n'ai pas de compilateur à portée de main pour le moment. Vous voudrez donc l'expérimenter un peu.)
la source
C'est difficile à dire, mais vous cherchez peut-être quelque chose comme:
Cela appellera implicitement la méthode ToString () sur chacun des éléments de la liste et les concaténera.
la source
String.Concat()
réalisera mieux la même chose.Si vous cherchez à faire tourner les éléments d'une liste dans une grande chaîne longue, faites ceci:
String.Join("", myList)
. Certaines anciennes versions de l'infrastructure ne vous permettent pas de passer un IEnumerable comme deuxième paramètre, vous devrez donc peut-être convertir votre liste en tableau en appelant .ToArray ().la source
La réponse directe à votre question est
String.Join
comme d'autres l'ont mentionné.Cependant, si vous avez besoin de quelques manipulations, vous pouvez utiliser
Aggregate
:la source
Cette méthode m'a aidé en essayant de récupérer des données à partir d'un fichier texte et de les stocker dans Array, puis de les affecter à une chaîne variable.
J'espère que cela peut aider quelqu'un !!!!
la source
Cela semble fonctionner pour moi.
la source
toutes les réponses ci-dessus ne fonctionnent PAS pour les listes imbriquées.
la source