meinst du string combindedString = string.Join (",", myList.ToArray ());
Sawe
2
Argument '2': Konvertiert nicht von 'System.Collections.Generic.List <string>' in 'string []'
Ash
9
Ich habe dies kürzlich verwendet, es funktioniert - lassen Sie einfach die .ToArray ()
Adrian K
3
@AdrianK Sie haben Recht, weil das .NET 4.0 die Möglichkeit hinzugefügt hat, einen beliebigen IEnumerable <string> zu übergeben. 4.0 wurde jedoch im April 2010 veröffentlicht, bevor diese Frage und Antwort veröffentlicht wurden, sodass die Leute hier vielleicht noch nichts davon wussten (außer ein paar unten)
Andrew Steitz
Für vb.net, Dim combindedString As String = String.Join (",", myList.ToArray ())
PartTimeNerd
55
Ich werde mit meinem Bauchgefühl gehen und davon ausgehen, dass Sie das Ergebnis des Aufrufs ToStringjedes Elements der Liste verketten möchten .
Die .ToString()Methode für Referenztypen wird normalerweise wieder aufgelöst, es System.Object.ToString()sei denn, Sie überschreiben sie in einem abgeleiteten Typ (möglicherweise mithilfe von Erweiterungsmethoden für die integrierten Typen). Das Standardverhalten für diese Methode besteht darin, den Namen des Typs auszugeben, für den sie aufgerufen wird. Was Sie also sehen, ist erwartetes Verhalten.
Sie könnten so etwas versuchen string.Join(", ", myList.ToArray());, um dies zu erreichen. Es ist ein zusätzlicher Schritt, aber es könnte in eine Erweiterungsmethode integriert werden System.Collections.Generic.List<T>, um es ein bisschen einfacher zu machen. Etwas wie das:
(Beachten Sie, dass dies Freihand- und ungetesteter Code ist. Ich habe derzeit keinen Compiler zur Hand. Sie sollten also ein wenig damit experimentieren.)
Es funktioniert, wenn ich es nicht ToString nenne oder es mit generischen Parametern ausführe. Aber ich mag Ihre Idee, Erweiterungsmethode zu verwenden :)
IAdapter
4
Es ist schwer zu sagen, aber vielleicht suchen Sie nach etwas wie:
var myString =String.Join(String.Empty, myList.ToArray());
Dadurch wird implizit die ToString () -Methode für jedes Element in der Liste aufgerufen und verkettet.
Wenn Sie die Elemente in einer Liste in eine große lange Zeichenfolge verwandeln möchten, gehen Sie wie folgt vor : String.Join("", myList). In einigen älteren Versionen des Frameworks können Sie keine IEnumerable als zweiten Parameter übergeben. Daher müssen Sie Ihre Liste möglicherweise durch Aufrufen von .ToArray () in ein Array konvertieren.
Stellen Sie im Produktionscode sicher, dass Ihre Liste ein Element enthält, da sonst eine Ausnahme ausgelöst wird.
AZ_
1
Diese Methode hat mir beim Versuch geholfen, Daten aus der Textdatei abzurufen und im Array zu speichern. Weisen Sie sie dann einer verfügbaren Zeichenfolge zu.
Antworten:
Vielleicht versuchst du es zu tun
Sie können "," durch das ersetzen, durch das Sie die Elemente in der Liste teilen möchten.
Bearbeiten : Wie in den Kommentaren erwähnt, könnten Sie auch tun
Referenz:
quelle
Ich werde mit meinem Bauchgefühl gehen und davon ausgehen, dass Sie das Ergebnis des Aufrufs
ToString
jedes Elements der Liste verketten möchten .quelle
Sie könnten verwenden
string.Join
:Das Ergebnis wäre:
Alternativ
Environment.NewLine
können Sie es durch ein auf Zeichenfolgen basierendes Zeilentrennzeichen Ihrer Wahl ersetzen.quelle
Wenn Sie etwas etwas komplexeres als eine einfache Verknüpfung wünschen, können Sie LINQ verwenden, z
Nimmt ["A", "B", "C"] und erzeugt "(a) (b) (c)"
quelle
String.Join(" ", myList)
oderString.Join(" ", myList.ToArray())
. Das erste Argument ist das Trennzeichen zwischen den Teilzeichenfolgen.Abhängig von Ihrer .NET-Version müssen Sie möglicherweise zuerst ToArray () in der Liste verwenden.
quelle
Sie haben eine
List<string>
- wenn Sie wollen, dass sie verkettet werden, so etwas wiewürde funktionieren (zumindest in .NET 4.0). Der erste Parameter ist das Trennzeichen. Sie können also auch durch Kommas trennen usw.
Möglicherweise möchten Sie auch StringBuilder verwenden, um Verkettungen auszuführen, anstatt eine Liste zu erstellen.
quelle
Die
.ToString()
Methode für Referenztypen wird normalerweise wieder aufgelöst, esSystem.Object.ToString()
sei denn, Sie überschreiben sie in einem abgeleiteten Typ (möglicherweise mithilfe von Erweiterungsmethoden für die integrierten Typen). Das Standardverhalten für diese Methode besteht darin, den Namen des Typs auszugeben, für den sie aufgerufen wird. Was Sie also sehen, ist erwartetes Verhalten.Sie könnten so etwas versuchen
string.Join(", ", myList.ToArray());
, um dies zu erreichen. Es ist ein zusätzlicher Schritt, aber es könnte in eine Erweiterungsmethode integriert werdenSystem.Collections.Generic.List<T>
, um es ein bisschen einfacher zu machen. Etwas wie das:(Beachten Sie, dass dies Freihand- und ungetesteter Code ist. Ich habe derzeit keinen Compiler zur Hand. Sie sollten also ein wenig damit experimentieren.)
quelle
Es ist schwer zu sagen, aber vielleicht suchen Sie nach etwas wie:
Dadurch wird implizit die ToString () -Methode für jedes Element in der Liste aufgerufen und verkettet.
quelle
String.Concat()
wird das gleiche besser erreichen.Wenn Sie die Elemente in einer Liste in eine große lange Zeichenfolge verwandeln möchten, gehen Sie wie folgt vor :
String.Join("", myList)
. In einigen älteren Versionen des Frameworks können Sie keine IEnumerable als zweiten Parameter übergeben. Daher müssen Sie Ihre Liste möglicherweise durch Aufrufen von .ToArray () in ein Array konvertieren.quelle
Die direkte Antwort auf Ihre Frage ist,
String.Join
wie andere erwähnt haben.Wenn Sie jedoch einige Manipulationen benötigen, können Sie Folgendes verwenden
Aggregate
:quelle
Diese Methode hat mir beim Versuch geholfen, Daten aus der Textdatei abzurufen und im Array zu speichern. Weisen Sie sie dann einer verfügbaren Zeichenfolge zu.
Hoffentlich kann jemand helfen !!!!
quelle
Das scheint bei mir zu funktionieren.
quelle
Alle obigen Antworten funktionieren NICHT für verschachtelte Listen.
quelle