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);
}
由于OrderBy的类型不是从sortExpression中推断出来的,因此我需要在运行时指定它,类似于以下内容:
var sortExpression = Expression.Lambda<T, TSortColumn>(body, param);
或者
return query.OrderBy<T, TSortColumn>(sortExpression);
我不认为这是可能的,因为 TSortColumn 只能在运行时确定。是否有解决这个问题的方法?