¿Cómo convierto una lista a una cadena en C #?
Cuando ejecuto toString
en un objeto List, obtengo:
System.Collections.Generic.List`1 [System.String]
¿Cómo convierto una lista a una cadena en C #?
Cuando ejecuto toString
en un objeto List, obtengo:
System.Collections.Generic.List`1 [System.String]
Respuestas:
Tal vez estás tratando de hacer
string combindedString = string.Join( ",", myList.ToArray() );
Puede reemplazar "," por el que desea dividir los elementos en la lista.
Editar : como se menciona en los comentarios, también puedes hacer
string combindedString = string.Join( ",", myList);
Referencia:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
Voy a seguir mi instinto y asumir que quieres concatenar el resultado de llamar ToString
a cada elemento de la lista.
var result = string.Join(",", list.ToArray());
Podrías usar string.Join
:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
El resultado sería:
Red
Blue
Green
Como alternativa Environment.NewLine
, puede reemplazarlo con un separador de línea basado en cadenas de su elección.
Si desea algo un poco más complejo que una simple unión, puede usar LINQ, por ejemplo
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
Tomará ["A", "B", "C"] y producirá "(a) (b) (c)"
String.Join(" ", myList)
o String.Join(" ", myList.ToArray())
. El primer argumento es el separador entre las subcadenas.
var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
Dependiendo de su versión de .NET, es posible que primero necesite usar ToArray () en la lista.
Tienes un List<string>
- así que si quieres concatenarlos, algo así como
string s = string.Join("", list);
funcionaría (en .NET 4.0 al menos). El primer parámetro es el delimitador. Entonces también podría delimitar comas, etc.
También es posible que desee ver el uso de StringBuilder para ejecutar concatenaciones, en lugar de formar una lista.
El .ToString()
método para los tipos de referencia generalmente se resuelve a System.Object.ToString()
menos que lo anule en un tipo derivado (posiblemente utilizando métodos de extensión para los tipos integrados). El comportamiento predeterminado para este método es mostrar el nombre del tipo en el que se llama. Entonces, lo que estás viendo es el comportamiento esperado.
Podrías intentar algo como string.Join(", ", myList.ToArray());
lograr esto. Es un paso adicional, pero se podría poner en un método de extensión System.Collections.Generic.List<T>
para hacerlo un poco más fácil. Algo como esto:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(", ", list);
}
}
(Tenga en cuenta que este es un código libre y no probado. No tengo un compilador a mano en este momento. Por lo tanto, querrá experimentar un poco con él).
Es difícil saberlo, pero quizás estés buscando algo como:
var myString = String.Join(String.Empty, myList.ToArray());
Esto llamará implícitamente al método ToString () en cada uno de los elementos de la lista y los concatenará.
String.Concat()
logrará lo mismo mejor.
Si usted está buscando para convertir los elementos de una lista en una cadena larga grande, hacer esto: String.Join("", myList)
. Algunas versiones anteriores del marco no le permiten pasar un IEnumerable como segundo parámetro, por lo que es posible que necesite convertir su lista en una matriz llamando a .ToArray ().
La respuesta directa a su pregunta es String.Join
como otros han mencionado.
Sin embargo, si necesita algunas manipulaciones, puede usar 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();
Este método me ayudó cuando intenté recuperar datos del archivo de texto y almacenarlos en una matriz, luego asignarlos a una cadena disponible.
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
Ojalá pueda ayudar a alguien !!!!
todas las respuestas anteriores NO funcionan para listas anidadas.