Creación de una lista separada por comas a partir de IList o IEnumerable

¿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>oIEnumerable`?

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.

Solución

.NET 4+

IList strings = new List{"1","2","testing"};
string joined = string.Join(",", strings);

Soluciones de detalle y pre .Net 4.0

IEnumerable se puede convertir en un array de cadenas muy fácilmente con LINQ (.NET 3.5):

IEnumerable strings = ...;
string[] array = strings.ToArray();

Es bastante fácil escribir el método de ayuda equivalente si lo necesitas:

public static T[] ToArray(IEnumerable source)
{
    return new List(source).ToArray();
}

Entonces llámalo así:

IEnumerable 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(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 :)

Comentarios (6)

puedes convertir el IList en un array usando ToArray y luego ejecutar un comando string.join en el array.

Dim strs As New List(Of String)
Dim arr As Array
arr = strs.ToArray
Comentarios (0)

Puedes usar .ToArray() en Listas y IEnumerables, y luego usar String.Join() como quieras.

Comentarios (0)