Esempio n. 1
0
 public static IOrderedQueryable <T> Order <T, TOrder>(
     this IQueryable <T> query,
     ISortParams sortParams,
     Expression <Func <T, TOrder> > ordersBy,
     SortDirs defaultSortDir = SortDirs.Asc)
 {
     return(query.Order(sortParams, new[] { ordersBy }, null, defaultSortDir));
 }
Esempio n. 2
0
        public static IOrderedQueryable <T> Order <T, TOrder>(
            this IQueryable <T> query,
            ISortParams sortParams,
            IEnumerable <Expression <Func <T, TOrder> > > ordersBy,
            SortDirs[] sortDirs     = null,
            SortDirs defaultSortDir = SortDirs.Asc)
        {
            //Choose between defaults and selected orders
            string[]   _ordersBy = null;
            SortDirs[] _sortDirs = null;
            if (sortParams != null && sortParams.SortBy != null && sortParams.SortBy.Any())
            {
                _ordersBy = sortParams.SortBy;
                _sortDirs = sortParams.SortDir;
            }
            else
            {
                _ordersBy = ordersBy.Select(o => ExpressionHelper.GetExpressionText(ExpressionHelper.RemoveConvert(o))).ToArray();
                _sortDirs = ordersBy.Select((o, i) => sortDirs != null && sortDirs.Where((x, ix) => i == ix).Any() ? sortDirs.Where((x, ix) => i == ix).FirstOrDefault() : defaultSortDir).ToArray();
            }

            //Apply Orders
            var y = 0;

            foreach (var o in _ordersBy)
            {
                if (y == 0)
                {
                    query = query.OrderByProperty(o, _sortDirs.ElementAt(y) == SortDirs.Asc);
                }
                else
                {
                    query = ((IOrderedQueryable <T>)query).ThenByProperty(o, _sortDirs.ElementAt(y) == SortDirs.Asc);
                }
                y++;
            }

            return((IOrderedQueryable <T>)query);
        }
Esempio n. 3
0
 public SortParams()
 {
     SortBy  = new string[] { };
     SortDir = new SortDirs[] { };
 }