[Linq] Aplicar varios Order en una consulta

Hola, en los foros siempre se ve la pregunta de por qué al aplicar dos OrderBy seguidos no se obtiene el resultado esperado. Bien en este post mostrare la forma de hacerlo.
Teniendo el siguiente código:

    public class Producto
    {
        public string Nombre { getset; }

        public int Precio { getset; }
    }    
    class Program     {         static void Main(string[] args)         {             List<Producto> productos = new List<Producto>                                            {                                                new Producto {Nombre = "Computadora", Precio = 200},                                                new Producto {Nombre = "Televisor", Precio = 150},                                                new Producto {Nombre = "Impresora", Precio = 350}                                            };             List<Producto> prdsOrdenado = productos.OrderBy(x => x.Nombre).OrderBy(y => y.Precio).ToList();                     }     }

Obtendremos el siguiente resultado

Como se puede ver, el segundo OrderBy sobrescribe al primero ignorando el orden que este ya había aplicado, para lograr el resultado esperado, acudimos al método ThenBy.

El código quedaría de la forma:

    class Program
    { 
        static void Main(string[] args) 
        { 
            List<Producto> productos = new List<Producto> 
                                           { 
                                               new Producto {Nombre = "Computadora", Precio = 200}, 
                                               new Producto {Nombre = "Televisor", Precio = 150}, 
                                               new Producto {Nombre = "Impresora", Precio = 350} 
                                           }; 
            List<Producto> prdsOrdenado = productos.OrderBy(x => x.Nombre).ThenBy(y => y.Precio).ToList();             
        } 
    } 

Y obtendremos el siguiente resultado

NOTA: Si deseas usar el orden descendente deberás acudir al método ThenByDescending

Espero les sea de utilidad.

Hasta el próximo post.

Anuncios
[Linq] Aplicar varios Order en una consulta

Un comentario en “[Linq] Aplicar varios Order en una consulta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s