Ejemplo n.º 1
0
        public static IOrderedQueryable <T> Sort <T>(
            this IQueryable <T> source,
            SortExpressionCollection sortExpressions,
            string defaultSortExpression)
        {
            if ((sortExpressions == null) || sortExpressions.Count < 1)
            {
                if (String.IsNullOrWhiteSpace(defaultSortExpression))
                {
                    throw new ArgumentException(
                              "A SortExpressionCollection or a default sort expression must be specified!",
                              nameof(defaultSortExpression));
                }

                return(source.OrderBy(
                           defaultSortExpression, SortDirection.Ascending));
            }

            var sortedSource = source.OrderBy(sortExpressions[0]);

            if (sortExpressions.Count > 1)
            {
                for (var i = 1; i < sortExpressions.Count; i++)
                {
                    sortedSource = sortedSource.ThenBy(sortExpressions[i]);
                }
            }

            return(sortedSource);
        }
        private static IOrderedEnumerable <T> Sort <T>(IEnumerable <T> collection, SortExpressionCollection sortExpressions)
        {
            IOrderedEnumerable <T> result = null;

            if (sortExpressions[0].Order == SortExpression.ORDER.ASC)
            {
                result = collection.OrderBy(s => GetPropertySort(s, sortExpressions[0].PropertyName));
            }
            else
            {
                result = collection.OrderByDescending(s => GetPropertySort(s, sortExpressions[0].PropertyName));
            }
            for (int i = 1; i < sortExpressions.Count; i++)
            {
                SortExpression sort = sortExpressions[i];
                if (sort.Order == SortExpression.ORDER.ASC)
                {
                    result = result.ThenBy(s => GetPropertySort(s, sort.PropertyName));
                }
                else
                {
                    result = result.ThenByDescending(s => GetPropertySort(s, sort.PropertyName));
                }
            }
            return(result);
        }
        public static IEnumerable <T> GetSegmentList <T>(this IEnumerable <T> collection, int startIndex, int maximumRows, string sortExpressions)
        {
            SortExpressionCollection sortExpressionList = null;

            if (sortExpressions != string.Empty)
            {
                sortExpressionList = SortExpressionCollection.Parse(sortExpressions);
            }
            if (sortExpressionList != null)
            {
                return(Sort(collection, sortExpressionList).Skip(startIndex).Take(maximumRows));
            }

            return(collection.Skip(startIndex).Take(maximumRows));
        }
Ejemplo n.º 4
0
        public IEnumerable <T> GetSegment(int startIndex, int maximumRows, string sortExpressions)
        {
            _sortExpression = sortExpressions;
            SortExpressionCollection sortExpressionList = null;

            if (sortExpressions != string.Empty)
            {
                sortExpressionList = SortExpressionCollection.Parse(sortExpressions);
            }
            if (sortExpressionList != null)
            {
                return(Sort(sortExpressionList).Skip(startIndex).Take(maximumRows));
            }

            return(_listObjects.Skip(startIndex).Take(maximumRows));
        }
Ejemplo n.º 5
0
        public static string AddSortExpression(string sortMetaData, SortExpression sortExpression)
        {
            SortExpressionCollection sortExpressions = PagedInfo.GetSortExpressions(sortMetaData);
            int num = sortExpressions.FindIndex((SortExpression s) => s.Expression == sortExpression.Expression);

            if (num != 0)
            {
                if (num > 0)
                {
                    sortExpressions.RemoveAt(num);
                }
                sortExpressions.Insert(0, sortExpression);
                if (sortExpressions.Count > 3)
                {
                    sortExpressions.RemoveRange(3, 1);
                }
            }
            else
            {
                sortExpressions[0].ToggleDirection();
            }
            return(sortExpressions.Serialize());
        }
Ejemplo n.º 6
0
 public static SortExpressionCollection GetSortExpressions(string sortMetaData)
 {
     return(SortExpressionCollection.DeSerialize(sortMetaData));
 }