Example #1
0
        /// <summary>
        ///  视图分页
        /// </summary>
        /// <code>
        /// <![CDATA[
        ///  PagedInputDto pagedInputDto = new PagedInputDto()
        ///                 {
        ///                     PageIndex = 1,
        ///                     PageSize = 10,
        ///                     Order = "StuName desc"
        ///                 };
        ///                 pagedInputDto.Filter = new PageFilterDto()
        ///                 {
        ///                     Type = "and",
        ///                     Conditions = new System.Collections.Generic.List<Condition>()
        ///                     {
        ///                         new Condition() { Attribute = "StuName", Datatype = "nvarchar", Operatoer = "like", Value = "0" },
        ///                         new Condition() { Attribute = "Birthday", Datatype = "int", Operatoer = "null" }
        ///                     },
        ///                     Filters = new System.Collections.Generic.List<PageFilterDto>()
        ///                     {
        ///                         new PageFilterDto()
        ///                         {
        ///                             Type = "or",
        ///                             Conditions = new System.Collections.Generic.List<Condition>()
        ///                             {
        ///                                 new Condition() { Attribute = "ApproveState", Datatype = "nvarchar",
        ///                                     Operatoer = "eq", Value = "审核中" }
        ///                             }
        ///                         }
        ///                     }
        ///                 };
        ///                 var pagedResult = service.GetPage(pagedInputDto);
        /// ]]>
        /// </code>
        /// <param name="pagedInputDto">分页输入对象</param>
        /// <returns>分页对象</returns>
        public virtual async Task <MyPagedResult <TView> > GetViewPageAsync(PagedInputDto pagedInputDto)
        {
            var db = this._dbContextProvider.GetDbContext();
            MyPagedResult <TView> pageResult = await db.Set <TView>().GetPageAsync <TView, TView>(pagedInputDto);

            return(pageResult);
        }
Example #2
0
        /// <summary>
        /// 获取分页信息,不使用Mapper
        /// </summary>
        /// <typeparam name="TEntityOrView"></typeparam>
        /// <param name="query"></param>
        /// <param name="pagedInputDto"></param>
        /// <returns></returns>
        public static async Task <MyPagedResult <TEntityOrView> > GetPageEntityOrViewAsync <TEntityOrView>(this IQueryable <TEntityOrView> query, PagedInputDto pagedInputDto) where TEntityOrView : class
        {
            query = EntityFrameworkQueryableExtensions.AsNoTracking <TEntityOrView>(query);
            //排序
            if (!string.IsNullOrEmpty(pagedInputDto.Order))
            {
                List <string> strList = pagedInputDto.Order.Split(new char[1]
                {
                    ','
                }).ToList();
                for (int i = 0; i < strList.Count; i++)
                {
                    query = ((i != 0) ? ((!strList[i].ToLower().Contains("desc")) ? DynamicQueryable.OrderBy <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>()) : DynamicQueryable.ThenByDescending <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>())) : ((!strList[i].ToLower().Contains("desc")) ? DynamicQueryable.OrderBy <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>()) : DynamicQueryable.OrderByDescending <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>())));
                }
            }
            if (pagedInputDto.Filter != null)
            {
                string   text  = pagedInputDto.Filter.ToWhere();
                object[] array = pagedInputDto.Filter.paramValues.ToArray();
                query = DynamicQueryable.Where <TEntityOrView>(query, text, array);
            }
            IQueryable <TEntityOrView> queryable = query.Skip(pagedInputDto.SkipCount).Take(pagedInputDto.PageSize);

            List <TEntityOrView> dataList = await EntityFrameworkQueryableExtensions.ToListAsync <TEntityOrView>(queryable, default(CancellationToken));

            MyPagedResult <TEntityOrView> obj = new MyPagedResult <TEntityOrView>();

            obj.PageSize  = pagedInputDto.PageSize;
            obj.PageIndex = pagedInputDto.PageIndex;
            obj.DataList  = dataList;
            obj.RowCount  = query.Count();
            return(obj);
        }
Example #3
0
        /// <summary>
        /// 带mapper
        /// </summary>
        /// <typeparam name="TEntityOrView"></typeparam>
        /// <typeparam name="TDto"></typeparam>
        /// <param name="query"></param>
        /// <param name="pagedInputDto"></param>
        /// <param name="configurationProvider"></param>
        /// <returns></returns>
        public static async Task <MyPagedResult <TDto> > GetPageAsync <TEntityOrView, TDto>(this IQueryable <TEntityOrView> query, PagedInputDto pagedInputDto) where TEntityOrView : class where TDto : class
        {
            query = EntityFrameworkQueryableExtensions.AsNoTracking <TEntityOrView>(query);
            //排序
            if (!string.IsNullOrEmpty(pagedInputDto.Order))
            {
                List <string> strList = pagedInputDto.Order.Split(new char[1]
                {
                    ','
                }).ToList();
                for (int i = 0; i < strList.Count; i++)
                {
                    query = ((i != 0) ? ((!strList[i].ToLower().Contains("desc")) ? DynamicQueryable.OrderBy <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>()) : DynamicQueryable.ThenByDescending <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>())) : ((!strList[i].ToLower().Contains("desc")) ? DynamicQueryable.OrderBy <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>()) : DynamicQueryable.OrderByDescending <TEntityOrView>(query, pagedInputDto.Order, Array.Empty <object>())));
                }
            }
            //if (!string.IsNullOrEmpty(pagedInputDto.Order))
            //{
            //    query = DynamicQueryable.OrderBy<TEntityOrView>(query, pagedInputDto.Order, Array.Empty<object>());
            //}
            if (pagedInputDto.Filter != null)
            {
                string   text  = pagedInputDto.Filter.ToWhere();
                object[] array = pagedInputDto.Filter.paramValues.ToArray();
                query = DynamicQueryable.Where <TEntityOrView>(query, text, array);
            }
            IQueryable <TEntityOrView> queryable = query.Skip(pagedInputDto.SkipCount).Take(pagedInputDto.PageSize);

            IQueryable <TDto> queryable2;

            if (!string.IsNullOrEmpty(pagedInputDto.Select))
            {
                queryable2 = DynamicQueryable.Select(queryable, pagedInputDto.Select, Array.Empty <object>()).Cast <TDto>();
            }
            else
            {
                queryable2 = Extensions.ProjectTo <TDto>(queryable, (AutoMapper.IConfigurationProvider)pagedInputDto.configurationProvider, Array.Empty <Expression <Func <TDto, object> > >());
            }
            List <TDto> dataList = await EntityFrameworkQueryableExtensions.ToListAsync <TDto>(queryable2, default(CancellationToken));

            MyPagedResult <TDto> obj = new MyPagedResult <TDto>();

            obj.PageSize  = pagedInputDto.PageSize;
            obj.PageIndex = pagedInputDto.PageIndex;
            obj.DataList  = dataList;
            obj.RowCount  = query.Count();
            return(obj);
        }
Example #4
0
        /// <summary>
        ///  视图分页
        /// </summary>
        /// <code>
        /// <![CDATA[
        ///  PagedInputDto pagedInputDto = new PagedInputDto()
        ///                 {
        ///                     PageIndex = 1,
        ///                     PageSize = 10,
        ///                     Order = "StuName desc"
        ///                 };
        ///                 pagedInputDto.Filter = new PageFilterDto()
        ///                 {
        ///                     Type = "and",
        ///                     Conditions = new System.Collections.Generic.List<Condition>()
        ///                     {
        ///                         new Condition() { Attribute = "StuName", Datatype = "nvarchar", Operatoer = "like", Value = "0" },
        ///                         new Condition() { Attribute = "Birthday", Datatype = "int", Operatoer = "null" }
        ///                     },
        ///                     Filters = new System.Collections.Generic.List<PageFilterDto>()
        ///                     {
        ///                         new PageFilterDto()
        ///                         {
        ///                             Type = "or",
        ///                             Conditions = new System.Collections.Generic.List<Condition>()
        ///                             {
        ///                                 new Condition() { Attribute = "ApproveState", Datatype = "nvarchar",
        ///                                     Operatoer = "eq", Value = "审核中" }
        ///                             }
        ///                         }
        ///                     }
        ///                 };
        ///                 var pagedResult = service.GetPage(pagedInputDto);
        /// ]]>
        /// </code>
        /// <param name="pagedInputDto">分页输入对象</param>
        /// <returns>分页对象</returns>
        public virtual async Task <MyPagedResult <TView> > GetViewPageAsync(PagedInputDto pagedInputDto)
        {
            MyPagedResult <TView> pageResult = await _db.Query <TView>().GetPageAsync <TView, TView>(pagedInputDto);

            return(pageResult);
        }