He encontrado un método de extensión que maneja la clasificación y paginación para LINQ. Si bien esto funciona bien, estoy tratando de ver si hay otras formas en que puedo usar esto.Método de extensión LINQ to SQL para ordenar y paginar
En la actualidad, el código para el extension method es como sigue:
public static IQueryable<T> Page<T, TResult>(
this IQueryable<T> obj,
int page,
int pageSize,
System.Linq.Expressions.Expression<Func<T, TResult>> keySelector,
bool asc,
out int rowsCount)
{
rowsCount = obj.Count();
int innerRows = (page - 1) * pageSize;
if (asc)
return obj.OrderBy(keySelector).Skip(innerRows).Take(pageSize).AsQueryable();
else
return obj.OrderByDescending(keySelector).Skip(innerRows).Take(pageSize).AsQueryable();
}
El método toma en una expresión, que está basada en el tipo.
En mi clase de distribuidor, que tiene un método GetDealers, que pide esencialmente esto, decir
db.User.Page(1, 2, p => p.User.UserProperty.Name, true, out rowCount)
Desde el lado de la presentación de las cosas, sin embargo, no sé o puedo tener acceso a la expresión que el anterior, por ejemplo,
ListView1.DataSource = users.GetDealers("SortColumn", pageNo, pageSize, out rowCount, bool asc);
ListView1.DataBind();
La única manera es tener una sentencia switch en mi método GetDealers que luego convertir a la expresión. ¿Hay alguna manera de eludir esto o es correcto este método?