修改扩展方法以允许ThenBy

时间:2015-01-04 16:47:47

标签: c# linq extension-methods

我有以下自定义扩展方法,它允许您动态指定要排序的字段 - 它用于绑定到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”,但我不确定如何执行此操作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以直接致电OrderBy()OrderByDescending()(而不是通过CreateQuery()),然后返回IOrderedQueryable<T>