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);
আমি মনে করি না এটি সম্ভব হয়েছে তবে টিসার্টকলাম কেবল রানটাইমের সময় নির্ধারণ করা যেতে পারে।
এই সমস্যা এড়ানোর একটি উপায় আছে কি?