Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static IQueryable<T> DataTablesSort<T>(this IQueryable<T> query, IEnumerable<(string column, string direction)> sortExpressions)
- {
- ParameterExpression param = Expression.Parameter(typeof(T));
- for (int i = 0; i < sortExpressions.Count(); i++)
- {
- var index = i;
- MemberExpression prop = Expression.PropertyOrField(param, sortExpressions.ElementAt(index).column);
- LambdaExpression sort = Expression.Lambda(prop, param);
- var functionName = index == 0 ? "OrderBy" : "ThenBy";
- functionName = sortExpressions.ElementAt(index).direction == "desc" ? functionName + "Descending" : functionName;
- MethodCallExpression resultExp = Expression.Call(typeof(Queryable), functionName, new Type[] { typeof(T), prop.Type }, query.Expression, Expression.Quote(sort));
- query = query.Provider.CreateQuery<T>(resultExp);
- }
- return query;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement