2011-09-19 12 views
14

¿Cómo puedo convertir una matriz de cadenas en una lista de int? (sin convertirlos uno por uno con mi propio método)¿Cómo puedo convertir la cadena [] a la lista <int>?

De la búsqueda en google He visto métodos llamados ToList() y ConvetAll() pero no puedo escribirlos, ¿por qué?

Lo que he intentado es:

new list<int>((int[])s.Split(','));

y yo estoy poniendo error que no puedo convertir una cadena [] a int [] :(

+0

¿Cómo son tus cadenas? – Gabe

+0

solo números (ints) –

+0

Posible duplicado de [Split string, convertir ToList () en una línea] (https://stackoverflow.com/questions/911717/split-string-convert-tolistint-in-one-line) –

Respuesta

32

Hay un proceso de dos pasos involucrados . aquí, la primera es la de convertir las cadenas a un entero, a continuación, convertir la matriz a una lista Si puede utilizar LINQ, la forma más fácil es usar:.

stringArray.Select(x => Int32.Parse(x)).ToList(); 
+9

o más corto: 'stringArray.Select (Int32.Parse) .ToList();' – BrokenGlass

+0

En caso de que alguien quiera incluir un 'TryParse' para evitar excepciones: 'int i; List intList = stringArray.Split (','). Seleccionar (s => int.TryParse (s, out i)? I: -1) .ToList(); ' –

0

Assumi ng values es su lista de cadenas:

int[] ints = new int[values.Count]; 

int counter = 0; 
foreach (string s in values) { 
    ints[counter++] = int.Parse(s); 
} 

No complicar mismo :)

11

Conseguir un indicio de su código:

var listOfInts = s.Split(',').Select(Int32.Parse).ToList(); 
0
var s = "1,2,3,4,5,6,7,8,9"; 
var result = s.Split(',').Select(Convert.ToInt32).ToList(); 
0

trate de usar

int x = 0; 

var intList= stringList.Where(str => int.TryParse(str, out x)).Select(str => x).ToList(); 
Cuestiones relacionadas