Wie konvertiere ich eine Liste in eine Zeichenfolge in C #?
Wenn ich toString
ein List-Objekt ausführe , erhalte ich:
System.Collections.Generic.List`1 [System.String]
Wie konvertiere ich eine Liste in eine Zeichenfolge in C #?
Wenn ich toString
ein List-Objekt ausführe , erhalte ich:
System.Collections.Generic.List`1 [System.String]
Antworten:
Vielleicht versuchst du es zu tun
string combindedString = string.Join( ",", myList.ToArray() );
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
string combindedString = string.Join( ",", myList);
Referenz:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
Ich werde mit meinem Bauchgefühl gehen und davon ausgehen, dass Sie das Ergebnis des Aufrufs ToString
jedes Elements der Liste verketten möchten .
var result = string.Join(",", list.ToArray());
Sie könnten verwenden string.Join
:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
Das Ergebnis wäre:
Red
Blue
Green
Alternativ Environment.NewLine
können Sie es durch ein auf Zeichenfolgen basierendes Zeilentrennzeichen Ihrer Wahl ersetzen.
Wenn Sie etwas etwas komplexeres als eine einfache Verknüpfung wünschen, können Sie LINQ verwenden, z
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
Nimmt ["A", "B", "C"] und erzeugt "(a) (b) (c)"
String.Join(" ", myList)
oder String.Join(" ", myList.ToArray())
. Das erste Argument ist das Trennzeichen zwischen den Teilzeichenfolgen.
var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
Abhängig von Ihrer .NET-Version müssen Sie möglicherweise zuerst ToArray () in der Liste verwenden.
Sie haben eine List<string>
- wenn Sie wollen, dass sie verkettet werden, so etwas wie
string s = string.Join("", list);
wü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.
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:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(", ", list);
}
}
(Beachten Sie, dass dies Freihand- und ungetesteter Code ist. Ich habe derzeit keinen Compiler zur Hand. Sie sollten also ein wenig damit experimentieren.)
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.
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.
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
:
List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");
string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();
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.
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
Hoffentlich kann jemand helfen !!!!
Alle obigen Antworten funktionieren NICHT für verschachtelte Listen.