none
Quitar elementos de un array bidimensional RRS feed

  • 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.

    domingo, 29 de diciembre de 2019 18:20

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).

    domingo, 29 de diciembre de 2019 20:35
    Moderador
  • Quizás no me expresé bien.

    Lo que quiero es quitar una fila de ese array bidimensional. Por ejemplo, quitar la fila myArray[i,0]   y  myArray[i,1]

    Cómo puedo hacerlo? Gracias.

    domingo, 29 de diciembre de 2019 23:20
  • 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

    lunes, 30 de diciembre de 2019 1:09
  • 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

    martes, 31 de diciembre de 2019 4:13