public enum Sort
{
ASC,DESC
}
public static IQueryable<T> CreateSortQuery<T>(IQueryable<T> query, string field, Sort sort)
{
ParameterExpression param = Expression.Parameter(typeof(T), field);
System.Reflection.PropertyInfo pi = typeof(T).GetProperty(field);
Type[] types = new Type[2];
types[0] = typeof(T);
types[1] = pi.PropertyType;
string sortwith;
if (sort == Sort.DESC)
sortwith = "OrderBy";
else
sortwith = "OrderByDescending";
Expression exp = Expression.Call(typeof(Queryable), sortwith, types, query.Expression, Expression.Lambda(Expression.Property(param, field), param));
return query.AsQueryable().Provider.CreateQuery<T>(exp);
}