/// <summary> /// 分步查询数据,返回实体对象信息 /// </summary> /// <param name="input"></param> /// <returns></returns> public List <T> _FilterStep(Q input) { _logger.LogTrace($"设置分步查询数据 (List<T> _FilterStep(Q input))。查询结果对象类型为:[{typeof(T).FullName}]\r\n查询条件对象类型为:[{typeof(Q).FullName}]\r\n查询条件为:[{input.ToJson()}]"); var queryResult = _Filter(input); if (input.Pagination == null) { input.Pagination = new QueryPagination() { Index = 1, PageMaxRecords = 10 } } ; if (input.Pagination.Index <= 0) { input.Pagination.Index = 1; } if (input.Pagination.PageMaxRecords <= 0) { input.Pagination.PageMaxRecords = 10; } PagedResultPagination resultPage = new PagedResultPagination(); queryResult = SetFilterPagination(input, queryResult, resultPage); if (resultPage.TotalPage < input.Pagination.Index) // 如果查询到最后一页,返回空列表 { return(new List <T>()); } return(queryResult.ToList()); }
/// <summary> /// 分页查询 获取实体对象 /// </summary> /// <param name="input"></param> /// <returns></returns> public PagedResult <T> _FilterPage(Q input) { var queryResult = _Filter(input); PagedResultPagination pagination = new PagedResultPagination(); queryResult = SetFilterPagination(input, queryResult, pagination); var infoList = queryResult.ToList(); //if (infoList.Count == 0) //{ // _Context.Response.StatusCode = 204; //} return(new PagedResult <T>(infoList, pagination)); }
/// <summary> /// 分页查询 转换成指定的View对象 /// </summary> /// <param name="input"></param> /// <returns></returns> public PagedResult <OV> FilterPage <OV>(Q input) { var queryResult = _Filter(input); PagedResultPagination pagination = new PagedResultPagination(); queryResult = SetFilterPagination(input, queryResult, pagination); var infoList = queryResult.ToList(); //if (infoList.Count == 0) //{ // _Context.Response.StatusCode = 204; //} var viewList = AutoMapper.Mapper.Map <List <OV> >(infoList); return(new PagedResult <OV>(viewList, pagination)); }
/// <summary> /// 获取满足条件的前几条数据 input.Pagination.PageMaxRecords为指定的返回记录的最大条数 /// </summary> /// <param name="input"></param> /// <returns></returns> public List <SelectView> SelectTop(Q input) { var queryResult = _Filter(input); PagedResultPagination pagination = new PagedResultPagination(); input.Pagination.Index = 1; if (input.Pagination.PageMaxRecords <= 0) { input.Pagination.PageMaxRecords = 10; } queryResult = SetFilterPagination(input, queryResult, pagination); var infoList = queryResult.ToList(); return(AutoMapper.Mapper.Map <List <SelectView> >(infoList)); }
/// <summary> /// 设置分页信息 /// </summary> /// <param name="filter">查询条件(包括分页及排序的信息)</param> /// <param name="queryResult">所有满足过滤条件的数据</param> /// <param name="resultPagination">返回的分页信息</param> protected virtual IQueryable <T> SetFilterPagination(Q filter, IQueryable <T> queryResult, PagedResultPagination resultPagination) { _logger.LogTrace($"设置数据分页效果 (IQueryable<T> SetFilterPagination(Q filter, IQueryable<T> queryResult, PagedResultPagination resultPagination))。查询结果对象类型为:[{typeof(T).FullName}]\r\n查询条件对象类型为:[{typeof(Q).FullName}]\r\n查询条件为:[{filter.ToJson()}]\r\n分页数据为:[{resultPagination.ToJson()}]"); #region 设置分页信息及返回值 // 初始化查询条件 if (filter.Pagination == null) { filter.Pagination = QueryPagination.DefaultObject; } if (filter.Pagination.PageMaxRecords == 0) { filter.Pagination.PageMaxRecords = QueryPagination.DefaultPageMaxRecords; } // 设置返回的分页信息 resultPagination.PageMaxRecords = filter.Pagination.PageMaxRecords; resultPagination.TotalRecords = queryResult.Count(); resultPagination.TotalPage = (int)Math.Ceiling((double)resultPagination.TotalRecords / (double)resultPagination.PageMaxRecords); // 设置页号 resultPagination.Index = filter.Pagination.Index; if (resultPagination.Index > resultPagination.TotalPage) { resultPagination.Index = resultPagination.TotalPage; } if (resultPagination.Index == 0) { resultPagination.Index = 1; } // 返回查询的数据结果 return(queryResult.Skip((resultPagination.Index - 1) * resultPagination.PageMaxRecords).Take(resultPagination.PageMaxRecords)); #endregion }