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);
}
क्योंकि ऑर्डरबाय के लिए टाइप सॉर्ट एक्सप्रेशन से अनुमानित नहीं है, मुझे इसे रन टाइम में इस तरह से निर्दिष्ट करने की आवश्यकता है:
var sortExpression = Expression.Lambda<T, TSortColumn>(body, param);
या
return query.OrderBy<T, TSortColumn>(sortExpression);
मुझे नहीं लगता कि यह संभव है, क्योंकि TSortColumn केवल रनटाइम के दौरान निर्धारित किया जा सकता है।
क्या इसके चारों ओर एक रास्ता है?