예제 #1
0
        /// <summary>
        /// Adds the 'OrderBy' clause to the query.
        /// </summary>
        private static IQueryable <TEntity> AddOrderBy(IFWDataOptions queryOptions, IQueryable <TEntity> query)
        {
            if (queryOptions.SortInfo != null && queryOptions.SortInfo.Count > 0)
            {
                query = (queryOptions.SortInfo[0].SortDirection == FWSortDirection.Ascending) ?
                        query.OrderBy(queryOptions.SortInfo[0].SortName) :
                        query.OrderByDescending(queryOptions.SortInfo[0].SortName);

                if (queryOptions.SortInfo.Count > 1)
                {
                    for (int i = 1; i < queryOptions.SortInfo.Count; i++)
                    {
                        query = (queryOptions.SortInfo[i].SortDirection == FWSortDirection.Ascending) ?
                                query.ThenBy(queryOptions.SortInfo[i].SortName) :
                                query.ThenByDescending(queryOptions.SortInfo[0].SortName);
                    }
                }
            }
            else
            {
                query = query.OrderBy(f => f.Id);
            }

            return(query);
        }
예제 #2
0
 private void Initialize(IFWDataOptions pagination)
 {
     Page     = pagination.Page;
     Total    = pagination.Total;
     Display  = pagination.Display;
     SortInfo = pagination.SortInfo;
 }
예제 #3
0
        /// <summary>
        /// Gets all records from the database paginated, projected into a different object.
        /// </summary>
        /// <typeparam name="TResult">The result type.</typeparam>
        /// <param name="selector">A projection funtion the be applied.</param>
        /// <param name="queryOptions">The data manipulation object reference</param>
        /// <returns>The list of entities found.</returns>
        public List <TResult> GetAll <TResult>(Expression <Func <TEntity, TResult> > selector, IFWDataOptions queryOptions)
        {
            IQueryable <TEntity> query = AddOrderBy(queryOptions, _dbSet);

            var result = query.Select(selector);

            queryOptions.Total = result.Count();

            int skip = queryOptions.Display * (queryOptions.Page - 1);

            if (queryOptions.Page > 0)
            {
                return(result.Skip(skip).Take(queryOptions.Display).ToList());
            }
            else
            {
                return(result.ToList());
            }
        }
예제 #4
0
 /// <summary>
 /// Initializes a new instance of the Framework.Model.FWGridList class.
 /// </summary>
 /// <param name="list"></param>
 /// <param name="pagination">The pagination object.</param>
 public FWGridList(IEnumerable <T> list, IFWDataOptions pagination)
     : base(list, pagination)
 {
 }
예제 #5
0
 /// <summary>
 /// Initializes a new instance of the Framework.Model.FWGridList class.
 /// </summary>
 /// <param name="pagination">The pagination object.</param>
 public FWGridList(IFWDataOptions pagination)
     : base(pagination)
 {
 }
예제 #6
0
 /// <summary>
 /// Initializes a new instance of the Framework.Model.FWList class.
 /// </summary>
 /// <param name="list"></param>
 /// <param name="pagination">The pagination object.</param>
 public FWDataList(IEnumerable <T> list, IFWDataOptions pagination)
     : base(list)
 {
     Initialize(pagination);
 }
예제 #7
0
 /// <summary>
 /// Initializes a new instance of the Framework.Model.FWList class.
 /// </summary>
 /// <param name="pagination">The pagination object.</param>
 public FWDataList(IFWDataOptions pagination)
 {
     Initialize(pagination);
 }