Beispiel #1
0
        /// <summary>
        /// Applies sort criterias specified in search query to result.
        /// </summary>
        /// <param name="collection"></param>
        /// <returns></returns>
        protected virtual IQueryable <T> ApplySortCriterias(IQueryable <T> collection)
        {
            if (!this.SortCriterias.Any())
            {
                return(collection);
            }

            ISortCriteria <T>     sortCriteria      = this.SortCriterias.First();
            IOrderedQueryable <T> orderedCollection = sortCriteria.Apply(collection);

            for (var i = 1; i < this.SortCriterias.Count; i++)
            {
                ISortCriteria <T> sc = this.SortCriterias[i];
                orderedCollection = sc.Apply(orderedCollection);
            }

            collection = orderedCollection;

            return(collection);
        }
        public static IQueryable <T> ApplyOrdering <T>(this IQueryable <T> query, ISortCriteria criterion,

                                                       Dictionary <string, Expression <Func <T, object> > > columnMap)
        {
            if (string.IsNullOrEmpty(criterion.SortBy))
            {
                return(query);
            }
            if (!columnMap.ContainsKey(criterion.SortBy))
            {
                return(query);
            }
            if (criterion.IsSortAscending)
            {
                query = query.OrderBy(columnMap[criterion.SortBy]);
            }
            else
            {
                query = query.OrderByDescending(columnMap[criterion.SortBy]);
            }

            return(query);
        }
        private IQueryable <T> ManageSortCriterias(QueryBase <T> searchQuery, IQueryable <T> dbQuery)
        {
            if (searchQuery.SortCriterias != null && searchQuery.SortCriterias.Count > 0)
            {
                ISortCriteria <T>     sortCriteria    = searchQuery.SortCriterias[0];
                IOrderedQueryable <T> orderedSequence = sortCriteria.ApplyOrdering(dbQuery, false);

                if (searchQuery.SortCriterias.Count > 1)
                {
                    for (var i = 1; i < searchQuery.SortCriterias.Count; i++)
                    {
                        ISortCriteria <T> sc = searchQuery.SortCriterias[i];
                        orderedSequence = sc.ApplyOrdering(orderedSequence, true);
                    }
                }
                dbQuery = orderedSequence;
            }
            else
            {
                dbQuery = ((IOrderedQueryable <T>)dbQuery).OrderBy(x => x.Id);
            }

            return(dbQuery);
        }
Beispiel #4
0
 public void AddSortCriteria(ISortCriteria <T> sortCriteria)
 {
     SortCriterias.Add(sortCriteria);
 }
        public IPageableQuery <TModel> OrderBy(ISortCriteria sortCriteria)
        {
            _sortCriterias.Add(sortCriteria);

            return(this);
        }
 /// <summary>
 /// Add sort criteria params.
 /// </summary>
 /// <param name="sortCriteria">sortCriteria.</param>
 public void AddSortCriteria(ISortCriteria <TEntity> sortCriteria)
 {
     this.SortCriterias.Add(sortCriteria);
 }