c# - parse - ¿Cómo creo una cadena delimitada por comas de una ArrayList?
string.parse c# (6)
Algo como:
String.Join(",", myArrayList.toArray(string.GetType()) );
Que básicamente bucles ya sabes ...
EDITAR
qué tal si:
string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));
Estoy almacenando una ArrayList de Ids en una secuencia de comandos de procesamiento que quiero escupir como una lista delimitada por comas para el resultado del registro de depuración. ¿Hay alguna manera de que pueda obtener esto fácilmente sin pasar por las cosas?
EDITAR: Gracias a Joel por señalar la lista (de T) que está disponible en .net 2.0 y superior. Eso hace que las cosas sean más fáciles si lo tienes disponible.
Aquí hay un ejemplo simple que demuestra la creación de una cadena delimitada por comas usando String.Join () de una lista de cadenas:
List<string> histList = new List<string>();
histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff"));
histList.Add(Index.ToString());
/*arValue is array of Singles */
foreach (Single s in arValue)
{
histList.Add(s.ToString());
}
String HistLine = String.Join(",", histList.ToArray());
Las soluciones hasta ahora son bastante complicadas. La solución idiomática debería sin duda ser:
String.Join(",", x.Cast(Of String)().ToArray())
No hay necesidad de acrobacias extravagantes en las nuevas versiones de framework. Suponiendo una versión no tan moderna, lo siguiente sería más fácil:
Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))
La segunda solución de mspmsp también es un buen enfoque, pero no funciona porque falla la palabra clave AddressOf
. Además, Convert.ToString
es bastante ineficiente (muchas evaluaciones internas innecesarias) y la clase Convert
generalmente no está muy bien diseñada. Tiendo a evitarlo, especialmente porque es completamente redundante.
Sí, estoy respondiendo mi propia pregunta, pero todavía no la he encontrado aquí y pensé que esto era algo bastante astuto:
... en VB.NET:
String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))
...Cª#
string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))
El único "inconveniente" para estos es que ArrayList debe tener los elementos almacenados como cadenas si está utilizando Option Strict para asegurarse de que la conversión se realice correctamente.
EDITAR: Si está utilizando .net 2.0 o superior, simplemente cree un objeto de tipo List (Of String) y podrá obtener lo que necesita. ¡Muchas gracias a Joel por mencionar esto!
String.Join(",", TargetList.ToArray())
string.Join(" ,", myArrayList.ToArray());
Esto funcionará con .NET Framework 4.5
foo.ToArray().Aggregate((a, b) => (a + "," + b)).ToString()
o
string.Concat(foo.ToArray().Select(a => a += ",").ToArray())