2011-02-16 12 views
62

tengo una cadena:Convierte una cadena a la lista <string> en una línea?

var names = "Brian,Joe,Chris"; 

¿Hay una manera de convertir esto en un List<string> delimitada por , en una línea?

+14

No entiendo el requisito "en una línea". Dispara para escribir código que sea claro y comprensible, no formas de ajustar una operación en un espacio tan pequeño como sea posible. –

+5

Con la llegada de LINQ, "one liners" que son legibles y limpios se han vuelto mucho más comunes en C# IMO. –

+4

@Ed S. - Si bien estoy de acuerdo en que "en una línea" puede no ser la mejor manera de expresarlo, los enunciados de una sola línea como el que brinda Matt Greer tienden a ser muy claros y comprensibles. Supongo que solo quiere evitar el uso de un bucle 'for', que es más tedioso, propenso a errores y poco claro. – StriplingWarrior

Respuesta

128
List<string> result = names.Split(new char[] { ',' }).ToList(); 

O incluso más limpio mediante la sugerencia de Dan:

List<string> result = names.Split(',').ToList(); 
+11

Puede haberlo puesto allí a propósito, pero siempre omito toda la parte 'new char [] {}'. Es más legible de esa manera, a * mí * al menos. –

+3

@Dan: estoy de acuerdo, y en general uso la sobrecarga de params. Pero para una respuesta a una pregunta, a veces siento que la verbosidad es mejor. Solo una cuestión de opinión en realidad. –

+2

ToList() parece que ya no está disponible? – ginalster

30

El List<T> tiene un constructor que acepta un IEnumerable<T>:

List<string> listOfNames = new List<string>(names.Split(','));

+0

Excelente: no es necesario importar System.Linq – VictorySaber

1

prefiero esto porque evita que un solo elemento de la lista con un elemento vacío si la cadena fuente está vacía:

IEnumerable<string> namesList = 
     !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>(); 
0

Si ya tiene una lista y desea agregar valores de una cadena delimitada, puede usar AddRange o InsertRange. Por ejemplo:

existingList.AddRange(names.Split(',')); 
Cuestiones relacionadas