Cómo ordenar por 2 propiedades en Linq

No utilizo las capas de persistencia de Linq (Linq2SQL, Linq2Entities…) porque tenemos nuestros propios desarrollos, pero sí me gusta utilizar Linq para manejar colecciones en memoria. Hoy me he encontrado con un caso particular mientras escribía una sentencia Linq, ya que necesitaba ordenarla primero por prioridad y después por identificador, y evidentemente concatenar los OrderBy produciría un resultado inverso al esperado, y además ineficiente: la segunda pasada volvería a ordenar (prevaleciendo sobre el primer orden).

Así que busco y veo que lo tienen todo pensado: existe otra sentencia ThenBy para aplicar el orden en el sentido natural de escritura, no en el sentido lógico de ejecución de los métodos. La sentencia quedaría algo así:
return coleccion.OrderBy(caso => caso.Prioridad).ThenBy(caso => caso.Numero);
Y funciona correctamente. Tengo mucha curiosidad por saber cómo lo hace internamente, y también si sirve con cualquier tipo de colección, pero esto lo dejaré para más adelante.

Anuncios
Esta entrada fue publicada en Linq y etiquetada , , , . Guarda el enlace permanente.

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