public static IQueryable<TResult> ApplySortFilter<T, TResult>(this IQueryable<T> query, string columnName)
where T : EntityObject
{
var param = Expression.Parameter(typeof(T), "o");
var body = Expression.PropertyOrField(param,columnName);
var sortExpression = Expression.Lambda(body, param);
return query.OrderBy(sortExpression);
}
Parce que le type pour OrderBy n'est pas déduit de sortExpression, je dois le spécifier quelque chose comme ça au moment de l'exécution:
var sortExpression = Expression.Lambda<T, TSortColumn>(body, param);
Ou
return query.OrderBy<T, TSortColumn>(sortExpression);
Cependant, je ne pense pas que cela soit possible car TSortColumn ne peut être déterminé que pendant l'exécution.
Y a-t-il un moyen de contourner ceci?