Exemple #1
0
        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);
        }
Exemple #2
0
 public virtual IQueryable <T> OrderBy <T>(IQueryable <T> query)
 {
     return(OrderByBuilder.Build(query, this));
 }