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?
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?
List<string> result = names.Split(new char[] { ',' }).ToList();
O incluso más limpio mediante la sugerencia de Dan:
List<string> result = names.Split(',').ToList();
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. –
@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. –
ToList() parece que ya no está disponible? – ginalster
El List<T>
tiene un constructor que acepta un IEnumerable<T>
:
List<string> listOfNames = new List<string>(names.Split(','));
Excelente: no es necesario importar System.Linq – VictorySaber
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>();
Si ya tiene una lista y desea agregar valores de una cadena delimitada, puede usar AddRange
o InsertRange
. Por ejemplo:
existingList.AddRange(names.Split(','));
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. –
Con la llegada de LINQ, "one liners" que son legibles y limpios se han vuelto mucho más comunes en C# IMO. –
@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