/// <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); }
/// <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); }
/// <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); }
/// <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); }