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); } }
/// <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)); }
/// <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)); }