¿Hay alguna forma de refactorizar este código? La única diferencia es el orden por parte.La consulta de LINQ necesita ascender o descender en la misma consulta
Idealmente me gustaría usar una expresión delegado/lambda lo que el código es reutilizable, pero no sé cómo agregar y quitar condicionalmente la OrdenarPor operadores de consulta y OrderByDescending
var linq = new NorthwindDataContext();
var query1 = linq.Customers
.Where(c => c.ContactName.StartsWith("a"))
.SelectMany(cus=>cus.Orders)
.OrderBy(ord => ord.OrderDate)
.Select(ord => ord.CustomerID);
var query2 = linq.Customers
.Where(c => c.ContactName.StartsWith("a"))
.SelectMany(cus => cus.Orders)
.OrderByDescending(ord => ord.OrderDate)
.Select(ord => ord.CustomerID);
Genial. Gracias Jon. –
Un poco fuera de tema, pero lo anterior se traducirá correctamente a Linq2SQL? IOW ¿es lo suficientemente inteligente como para ver un método "no compatible" y ejecutarlo antes de construir un árbol de sintaxis y generar el SQL? Solo me pregunto, nunca lo intenté. :) – leppie
@leppie: Es solo llamar a los métodos Queryable existentes: esos son los que crean el árbol de expresiones. Tenga en cuenta que esto * no * funcionará contra 'IEnumerable' en este momento, aunque podría escribir fácilmente métodos de extensión equivalentes que lo harían. –