我有以下自定义扩展方法,它允许您动态指定要排序的字段 - 它用于绑定到JQuery DataTable。
public static IQueryable<T> OrderByField<T>(this IQueryable<T> q, string SortField, string SortDirection)
{
var param = Expression.Parameter(typeof(T), "p");
var prop = Expression.Property(param, SortField);
var exp = Expression.Lambda(prop, param);
var method = SortDirection == "asc" ? "OrderBy" : "OrderByDescending";
var types = new Type[] { q.ElementType, exp.Body.Type };
var mce = Expression.Call(typeof(Queryable), method, types, q.Expression, exp);
return q.Provider.CreateQuery<T>(mce);
}
然后调用如下:.OrderByField("ColumnName", "asc")
其中两个参数是字符串。
我希望修改此函数以允许在之后立即调用“thenby”,但我不确定如何执行此操作。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以直接致电OrderBy()
或OrderByDescending()
(而不是通过CreateQuery()
),然后返回IOrderedQueryable<T>
。