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.Property或Field(param,columnName);
var sortExpression = Expression.Lambda(body, param);
return query.或derBy(sortExpression);
}
因为或derBy的类型不是从sortExpression推断出来的,所以我需要在运行时指定如下内容:
var sortExpression = Expression.Lambda<T, TSortColumn>(body, param);
或
return query.或derBy<T, TSortColumn>(sortExpression);
但我认为这是不可能的,因为TSortColumn只能在运行时确定.
有什么办法可以绕过这件事吗?