/// <summary> /// Create sort expression. /// </summary> /// <param name="me">Me.</param> /// <param name="orderByProperty">The order by property.</param> /// <param name="sortOrder">The sort order.</param> /// <returns>Expression.</returns> public static Expression Sort(this Expression me, String orderByProperty, SortOrderType sortOrder) { // Get sort property var sortProperty = me.Type.GenericTypeArguments[0].GetRuntimeProperty(orderByProperty); Type predicateType = typeof(Func <,>).MakeGenericType(me.Type.GetTypeInfo().GenericTypeArguments[0], sortProperty.PropertyType); var sortMethod = typeof(Enumerable).GetGenericMethod(sortOrder.ToString(), new Type[] { me.Type.GetTypeInfo().GenericTypeArguments[0], sortProperty.PropertyType }, new Type[] { me.Type, predicateType }); // Get builder methods var sortParameter = Expression.Parameter(me.Type.GetTypeInfo().GenericTypeArguments[0], "sort"); var builderMethod = typeof(Expression).GetGenericMethod(nameof(Expression.Lambda), new Type[] { predicateType }, new Type[] { typeof(Expression), typeof(ParameterExpression[]) }); var sortLambda = builderMethod.Invoke(null, new object[] { Expression.MakeMemberAccess(sortParameter, sortProperty), new ParameterExpression[] { sortParameter } }) as Expression; return(Expression.Call(sortMethod as MethodInfo, me, sortLambda)); }
public override string ToString() { return("Framework.Persistence.SortOrder(PropertyName:{0}, SortOrderType:{1})".FormatInvariantCulture(PropertyName, SortOrderType.ToString())); }
/// <summary> /// Get Presentations /// </summary> /// <param name="searchPresentation">Search Presentation</param> /// <param name="skip">Records to skip</param> /// <param name="top">Records Count</param> /// <param name="sortDirection">Sort Direction</param> /// <returns></returns> public List <Presentation> GetPresentations(string searchPresentation, int skip, int top, SortOrderType sortDirection) { List <Presentation> presentationList = null; var presentationUrl = Constants.PresentationUrl; if (!string.IsNullOrEmpty(searchPresentation)) { presentationUrl += string.Concat(Constants.OneSpace, searchPresentation); } var request = new RestRequest(presentationUrl, Method.GET); request.AddParameter(Constants.Select, Constants.Full); request.AddParameter(Constants.Orderby, string.Concat(Constants.RecordDateOrder, sortDirection.ToString().ToLower())); request.AddParameter(Constants.Skip, skip); request.AddParameter(Constants.Top, top > 0 ? top : 2000); var presentations = ClientManager.Client.Execute <GenericResponse <PresentationFullRepresentation> >(request); if (presentations.Data?.Value != null) { presentationList = presentations.Data.Value.Select(MapToModel).ToList(); } return(presentationList); }