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은 런타임 중에 만 결정할 수 있기 때문에 가능합니다.
이 문제를 해결할 방법이 있습니까?