Dividir cadena, convertir ToList () en una línea

Tengo una cuerda que tiene números

string sNumbers = "1,2,3,4,5"; 

Puedo dividirlo y luego convertirlo a List

 sNumbers.Split( new[] { ',' } ).ToList(); 

¿Cómo puedo convertir una matriz de cadenas a una lista de enteros? Para que yo pueda convertir la string[] a IEnumerable

 var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList(); 

También puede hacerlo de esta manera sin la necesidad de Linq:

 List numbers = new List( Array.ConvertAll(sNumbers.Split(','), int.Parse) ); // Uses Linq var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList(); 

El camino de Joze también necesita LINQ, ToList() está en el espacio de nombres System.Linq .

Puede convertir Array en List sin Linq pasando la matriz al constructor de Lista:

 List numbers = new List( Array.ConvertAll(sNumbers.Split(','), int.Parse) ); 

También es posible int array para asignar el valor de asignación.

Me gusta esto

 int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray(); 

En Unity3d, int.Parse no funciona bien. Entonces uso como abajo.

 List intList = new List( Array.ConvertAll(sNumbers.Split(','), new Converter((s)=>{return Convert.ToInt32(s);}) ) ); 

Espero esta ayuda para los usuarios de Unity3d.

también puedes usar este método de extensión

 public static List SplitToIntList(this string list, char separator = ',') { return list.Split(separator).Select(Int32.Parse).ToList(); } 

uso:

 var numberListString = "1, 2, 3, 4"; List numberList = numberListString.SplitToIntList(','); 

Mi problema fue similar pero con el inconveniente de que a veces la cadena contiene letras (a veces vacías).

 string sNumbers = "1,2,hh,3,4,x,5"; 

Intentando seguir el Método de extensión Pcode Xonos:

 public static List SplitToIntList(this string list, char separator = ',') { int result = 0; return (from s in list.Split(',') let isint = int.TryParse(s, out result) let val = result where isint select val).ToList(); } 

Puede usar las nuevas características del lenguaje C # 6.0:

  • reemplace delegate (s) => { return Convert.ToInt32(s); } (s) => { return Convert.ToInt32(s); } con el grupo de métodos correspondiente Convert.ToInt32
  • reemplazar llamada de constructor redundante: new Converter(Convert.ToInt32) con: Convert.ToInt32

El resultado será:

 var intList = new List(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32)); 

Puedes usar esto:

 List sNumberslst = sNumbers.Split(',').ConvertIntoIntList();