¿Cuál es la forma más limpia de crear una lista separada por comas de valores de cadena a partir de una IList<string>o
IEnumerable
El método String.Join(...)
opera sobre una cadena[]
por lo que puede ser complicado trabajar con tipos como IList<string>
o IEnumerable<string>
que no pueden convertirse fácilmente en una matriz de cadenas.
.NET 4+
IList<string> strings = new List<string>{"1","2","testing"};
string joined = string.Join(",", strings);
Soluciones de detalle y pre .Net 4.0
IEnumerable<string>
se puede convertir en un array de cadenas muy fácilmente con LINQ (.NET 3.5):
IEnumerable<string> strings = ...;
string[] array = strings.ToArray();
Es bastante fácil escribir el método de ayuda equivalente si lo necesitas:
public static T[] ToArray(IEnumerable<T> source)
{
return new List<T>(source).ToArray();
}
Entonces llámalo así:
IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings);
A continuación, puede llamar a string.Join
. Por supuesto, usted no tiene que utilizar un método de ayuda:
// C# 3 and .NET 3.5 way:
string joined = string.Join(",", strings.ToArray());
// C# 2 and .NET 2.0 way:
string joined = string.Join(",", new List<string>(strings).ToArray());
Aunque esto último es un poco complicado :)
Esta es probablemente la forma más sencilla de hacerlo, y bastante performante también - hay otras preguntas acerca de cómo es exactamente el rendimiento, incluyendo (pero no limitado a) este.
A partir de .NET 4.0, hay más sobrecargas disponibles en string.Join
, por lo que en realidad puedes simplemente escribir:
string joined = string.Join(",", strings);
Mucho más sencillo :)
Puedes usar .ToArray()
en Listas
y IEnumerables
, y luego usar String.Join()
como quieras.