Considere la siguiente matriz:

int[,] numbers = new int[3, 2] { { 2, 1 }, { 3, 4 }, { 6, 5 } };

Me gustaría usar LINQ para la construcción de un IEnumerable con números 2, 1, 3, 4, 6, 5.

Cuál sería la mejor manera de hacerlo?

Eso es una matriz 2d no una matriz de matrices(matriz escalonada).
Tienes razón… es una matriz multidimensional.
posibles duplicados de Convertir matriz de 2 dimensiones
Hay una consulta de linq en el duplicado, pero me gustaría ir con un foreach como la consulta de linq es bastante opaco y el foreach es claro lo que está haciendo.
‘var flatNumbers = números.Cast<int>();’ copiado y modificado a partir de la post vinculado. Todos LINQ

OriginalEl autor Kees C. Bakker | 2012-12-11

3 Comentarios

  1. 6

    Cómo sobre:

    Enumerable
        .Range(0,numbers.GetUpperBound(0)+1)
        .SelectMany(x => Enumerable.Range(0,numbers.GetUpperBound(1)+1)
        .Select (y =>numbers[x,y] ));

    o para perfeccionar.

    var xLimit=Enumerable.Range(0,numbers.GetUpperBound(0)+1);
    var yLimit=Enumerable.Range(0,numbers.GetUpperBound(1)+1);
    var result = xLimit.SelectMany(x=> yLimit.Select(y => numbers[x,y]));

    EDICIÓN Revisada Pregunta….

    var result = array.SelectMany(x => x.C);

    OriginalEl autor Bob Vale

  2. 27

    Quizás simplemente:

    var all = numbers.Cast<int>();

    Demo

    +1 me – Cast es una que tiene un poco menos de arriba, a continuación, OfType en este caso
    Upvoted. Pero en cualquier manera conseguimos boxeo y unboxing, porque esto va a través de la no-genérico IEnumerable interfaz que los rendimientos object cajas que son sin caja por Cast.

    OriginalEl autor Rango

  3. 5

    Simple uso de foreach para obtener sus números de matriz 2d:

    int[,] numbers = new int[3, 2] { { 2, 1 }, { 3, 4 }, { 6, 5 } };
    foreach(int x in numbers)
    {
       //2, 1, 3, 4, 6, 5.
    }

    LINQ (es una gran sobrecarga para el uso de Linq para su tarea inicial, porque en lugar de una simple iteración de la matriz, CastIterator (Tim respuesta) de OfTypeIterator serán creados)

    IEnumerable<int> query = numbers.OfType<int>();
    Necesito usar LINQ. Mi problema es una labor más compleja… pero necesito utilizar LINQ. Cada objeto de la matriz tiene una propiedad que tiene una matriz que voy a necesitar para hacer puré en una sola lista.
    Por favor enviar toda tu problema como se puede obtener diferentes respuestas
    «Necesito usar LINQ.» Suena como una tarea a mí…
    Puede ser una tarea, pero también puede ser el más pequeño ejemplo de trabajo de una mente-bogglingly sistema complejo, que el autor de la pregunta no quieren molestarse con nosotros 😉

    OriginalEl autor Sergey Berezovskiy

Dejar respuesta

Please enter your comment!
Please enter your name here