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);
}
Vì kiểu cho OrderBy không được suy ra từ sortExpression, nên tôi cần chỉ định nó như thế này tại thời điểm chạy:
var sortExpression = Expression.Lambda<T, TSortColumn>(body, param);
Hoặc là
return query.OrderBy<T, TSortColumn>(sortExpression);
Tuy nhiên, tôi không nghĩ rằng điều này là có thể vì TSortColumn chỉ có thể được xác định trong thời gian chạy.
Có cách nào để giái quyết vấn đề này không?