2011-06-10 8 views
6

estoy usando "LINQ" a la lista de objetos filtrar y ordenar ellos, comoLINQ Ordenar Por y Orden Por la descripción

myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize) 
     .OrderBy(x => x.ManufacturingDate) 
     .OrderBy(x=>x.ExpiryDate); 

dudo que lo estoy haciendo bien o no que es que si yo quiero "clasificación" en múltiples campos a continuación, es necesario el uso de múltiples cláusula ORDER BY no puede ser hecho con el single "OrdenarPor"

Respuesta

14

no utilice múltiples llamadas OrderBy - Uso OrderBy seguido por ThenBy:

var query = myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize) 
        .OrderBy(x => x.ManufacturingDate) 
        .ThenBy(x => x.ExpiryDate); // Could add more ThenBy calls 

Si utiliza OrderBy dos veces, se reordenar la lista ya ordenada por fecha por fecha de expiración, mientras que supongo que sólo desea ordenar por fecha de caducidad para los artículos con igual fecha de fabricación, que es lo que hace lo de arriba

Obviamente también hay un método ThenByDescending. Por ejemplo:

var query = people.OrderBy(x => x.LastName) 
        .ThenBy(x => x.FirstName) 
        .ThenByDescending(x => x.Age) 
        .ThenBy(x => x.SocialSecurity); 
+0

Gracias @Jon Me preguntaba si debe haber algo para este escenario – Deepesh