¿Qué es el método selectMany.ToArray()
? ¿Es un método incorporado en C#
?Convertir matriz 2 dimensiones
Necesito convertir una matriz bidimensional a una matriz unidimensional.
¿Qué es el método selectMany.ToArray()
? ¿Es un método incorporado en C#
?Convertir matriz 2 dimensiones
Necesito convertir una matriz bidimensional a una matriz unidimensional.
SelectMany es un operador de proyección, un método de extensión proporcionado por el espacio de nombres System.Linq.
Realiza una proyección de uno a muchos elementos sobre una secuencia, lo que le permite "aplanar" las secuencias resultantes en una.
Se puede utilizar de esta manera:
int[][] twoDimensional = new int[][] {
new int[] {1, 2},
new int[] {3, 4},
new int[] {5, 6}
};
int [] flattened = twoDimensional.SelectMany(x=>x).ToArray();
Si se refiere a una matriz dentada (T[][]
), SelectMany
es su amigo. Sin embargo, si quieres decir una matriz rectangular (T[,]
), a continuación, puedes enumerar los datos de la fecha a través de foreach
- o:
int[,] from = new int[,] {{1,2},{3,4},{5,6}};
int[] to = from.Cast<int>().ToArray();
Este hilo, http://stackoverflow.com/questions/5132397/fast-way-to-convert-a-two-dimensional-array-to-a-list-one-dimensional, entra en detalles sobre cómo hacer el método foreach y también algunas métricas de rendimiento. – ShawnFeatherly
punto pedante; eso no es lo que yo llamaría una matriz bidimensional: es una matriz dentada ... –
@MarcGravell ¿No es una matriz dentada 2D? Claramente, una matriz irregular no es una matriz rectangular o una matriz "cubo". Pero todavía tiene un grado de dimensión. Decir que la matriz 2D no especifica irregular o geométrica/recta. – barlop
@barlop quizás, pero finalmente "la matriz" aquí se referiría a la matriz externa, que es un vector de referencias; la irregularidad de hecho deja en claro que es más complejo, y estoy de acuerdo en que de alguna manera podría usarse "2D", en oposición a, por ejemplo, un 'int [] [] []'. En última instancia, nombrar es difícil :) –