Usuario
Quitar elementos de un array bidimensional

Pregunta
-
Hola.
Tengo un array de enteros de dos dimensiones : public static int[,] miArray;
A ese array quiero quitarle elementos de unas determinadas posiciones. He pensado en pasar ese array a un arrayList y pasarle el método RemoveAt(), pero al ser de dos dimensiones, ya me pierdo.
En el caso de que fuese un array de una sola dimensión, lo haría con LINQ haciendo esto:
miArray = miArray.Where(quitaelemento => quitaelemento != (miArray[i])).ToArray();
Alguna sugerencia? Gracias. Saludos.
Todas las respuestas
-
Si el array es de dos dimensiones, puedes quitar una fila completa o una columna completa, pero no puedes quitar un único elemento. Si se pudiese quitar, quedaría un "agujero" dentro del conjunto de filas y columnas, y un array no soporta que haya agujeros. Si verdaderamente lo necesitases con agujeros, podrías usar una lista de listas, por ejemplo, List<List<int>>. Entonces podrías quitar un elemento haciendo lista[fila].RemoveAt(columna). También se admiten otras combinaciones, como por ejemplo un array de listas List<int>[], que igualmente permitiría eliminar un elemento usando array[fila].RemoveAt(columna).
- Editado Alberto PoblacionMVP, Moderator domingo, 29 de diciembre de 2019 20:38
- Propuesto como respuesta Diana AcuñaModerator lunes, 30 de diciembre de 2019 16:03
-
-
Hay algo más que te puedo decir ...
Si queres tener un array de 2 D, pero que sus filas no tengan igual longitud, podes hacer esto:
int[][] miArray = new int[][] {
new int[] { 0, 1, 2, 3 },
new int[] { 4, 5, 6, 7, 8, 9 }
new int[] { -1, -2 }
};
o también podes hacer
int[][] miArray = new int[4][];
miArray[0] = new int[8];
miArray[1] = new int[4];
miArray[2] = new int[6];
miArray[3] = new int[5];
Espero sea útil
Saludos
- Propuesto como respuesta Diana AcuñaModerator lunes, 30 de diciembre de 2019 16:04
-
hola
>>Lo que quiero es quitar una fila de ese array bidimensional. Por ejemplo, quitar la fila myArray[i,0] y myArray[i,1]
lo que planteas es bastante complicado de trabajar con arrays porque no estan pensados para redimensionarse
lo mas aprecido que tiene es el
Array.Resize<T>(T[], Int32) Method
para poder cambiar las dimensiones, pero lo veo complicado
Por eso recomendaria que trabajes con colecciones mas dinamicas como ser un List<>, o si es en dos dimensiones un List<List<>> o sea una lista dentro de otro lista
la primer lista serian las filas la segunda las columnas
No se si lo evaluaste pero tambien podrias usar un DataTable, basicamente una tabla tiene filas y columnas o sea dos dimensiones y con este puede eliminar una row completa
Deleting row from datatable in C#
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina