示例#1
0
        private static void FillOperators(IQuery query, RestQueryString restQuery, RestProcessParameters param)
        {
            if (restQuery.QueryStringValues.ContainsKey(RestConstants.LimitOperator))
            {
                var maxResults = restQuery.QueryStringValues[RestConstants.LimitOperator].First().IntSafeInvariantParse();
                query.SetMaxResults(maxResults);
            }

            if (restQuery.QueryStringValues.ContainsKey(RestConstants.OrderOperator))
            {
                var orderby      = restQuery.QueryStringValues[RestConstants.OrderOperator].FirstOrDefault();
                var orderbyMatch = OrderByRegex.Match(orderby);
                if (orderbyMatch.Success)
                {
                    switch (orderbyMatch.Groups["asc"].Value.IsNullOrEmpty() ? "asc" : orderbyMatch.Groups["asc"].Value)
                    {
                    case "asc":
                        query.AddOrder(Order.Asc(orderbyMatch.Groups["prop"].Value));
                        break;

                    case "desc":
                        query.AddOrder(Order.Desc(orderbyMatch.Groups["prop"].Value));
                        break;
                    }
                }
            }

            if (restQuery.QueryStringValues.ContainsKey(RestConstants.IncludeOperator))
            {
                foreach (var value in restQuery.QueryStringValues[RestConstants.IncludeOperator])
                {
                    query.Include(value);
                }
            }

            if (restQuery.QueryStringValues.ContainsKey(RestConstants.SelectOperator))
            {
                query.SetProjection(Projection.Properties(restQuery.QueryStringValues[RestConstants.SelectOperator]));
            }

            if (param.Context.Request.Headers.ContainsKey(RestConstants.ContinuationTokenHeader))
            {
                var continuationToken = param.Context.Request.Headers[RestConstants.ContinuationTokenHeader].FirstOrDefault();
                query.SetContinuationToken(continuationToken);
            }
        }
示例#2
0
 /// <summary>
 /// Order by desc
 /// </summary>
 /// <typeparam name="TQueryModel">Query model</typeparam>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="field">Field</param>
 /// <param name="converter">Field converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery Desc <TQueryModel>(this IQuery sourceQuery, Expression <Func <TQueryModel, dynamic> > field, ICriteriaConverter converter = null) where TQueryModel : IQueryModel <TQueryModel>
 {
     return(sourceQuery.AddOrder(ExpressionHelper.GetExpressionPropertyName(field.Body), true, converter));
 }
示例#3
0
 /// <summary>
 /// Order by desc
 /// </summary>
 /// <param name="sourceQuery">Source query</param>
 /// <param name="field">Field</param>
 /// <param name="converter">Field converter</param>
 /// <returns>Return the newest IQuery object</returns>
 public static IQuery Desc(this IQuery sourceQuery, string field, ICriteriaConverter converter = null)
 {
     return(sourceQuery.AddOrder(field, true, converter));
 }