public IQueryable <TResult> GetQuery(IQueryable <TSource> query) { if (query == null) { throw new ArgumentNullException(nameof(query)); } var groupBy = MakeGroupByExpression(GroupingKeys.ToArray()); IQueryable query1 = (IQueryable)TypicalLinqMethods.QueryableGroupBy .MakeGenericMethod(typeof(TSource), groupBy.ReturnType) .Invoke(null, new object[] { query, groupBy }); var selectExpr = MakeSelectExpression(groupBy, _mappings); MethodInfo selectMethod = TypicalLinqMethods.QueryableSelect.MakeGenericMethod(query1.ElementType, typeof(TResult)); query1 = (IQueryable)selectMethod.Invoke(null, new object[] { query1, selectExpr }); if (!_sorts.IsNullOrEmpty()) { query1 = OrderByBuilder.Build(query1, _sorts); } return((IQueryable <TResult>)query1); }
public virtual IQueryable <T> OrderBy <T>(IQueryable <T> query) { return(OrderByBuilder.Build(query, this)); }