/// <summary>
        ///获取分页数据
        /// </summary>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageCount">页大小</param>
        /// <param name="specification">条件</param>
        /// <param name="orderByExpressions">是否排序</param>
        /// <returns>实体的分页数据</returns>
        public PagedList <TEntity> GetPaged(int pageIndex, int pageCount, IDynamicSpecification <TEntity> specification,
                                            SortExpression <TEntity> orderByExpressions = null)
        {
            if (orderByExpressions == null || !orderByExpressions.IsNeedSort())
            {
                orderByExpressions = new SortExpression <TEntity>(new List <EditableKeyValuePair <Expression <Func <TEntity, dynamic> >, bool> >
                {
                    new EditableKeyValuePair <Expression <Func <TEntity, dynamic> >, bool>(item => item.Id, false),
                });
            }

            if (pageIndex == 0)
            {
                pageIndex = 1;
            }
            //如果动态路由可用则为单库
            if (!string.IsNullOrEmpty(specification.Coden))
            {
                var set = DynamicGetAll(specification);
                //如果找到了单库
                if (set != null)
                {
                    var queryable = set.Where(specification.SatisfiedBy());
                    int totel     = queryable.Count();
                    IEnumerable <TEntity> items = orderByExpressions.BuildSort(queryable).Skip(pageCount * (pageIndex - 1)).Take(pageCount);
                    return(new PagedList <TEntity>(totel, pageCount, pageIndex, items.ToList()));
                }
            }

            //如果找不到单库
            int sum = 0;
            List <IQueryable <TEntity> > entities = new List <IQueryable <TEntity> >();

            foreach (var tmp in DbFactory.GetDynamicDbConfigs(typeof(TEntity)))
            {
                var queryable = DynamicGetAll(new SampleRouter(tmp.DynamicCoden)).Where(specification.SatisfiedBy());
                sum += queryable.Count();
                entities.Add(queryable);
            }
            int newDataIndex = (pageIndex + 1) * pageCount;

            //如果在中值之后则反转排序
            if (sum < pageIndex * pageCount * 2 && pageIndex * pageCount > sum)
            {
                orderByExpressions.Reverse();
                //反转页码
                newDataIndex = sum - pageIndex * pageCount;
                var datas = entities.SelectMany(item => orderByExpressions.BuildSort(item).Take(newDataIndex)).ToList();

                orderByExpressions.Reverse();
                datas = orderByExpressions.BuildSort(datas).Skip(0).Take(pageCount).ToList();
                return(new PagedList <TEntity>(sum, pageCount, pageIndex, datas.ToList()));
            }
            else
            {
                var datas = entities.SelectMany(item => orderByExpressions.BuildSort(item).Take(newDataIndex))
                            .Skip(pageCount * (pageIndex - 1)).Take(pageCount).ToList();
                return(new PagedList <TEntity>(sum, pageCount, pageIndex, datas.ToList()));
            }
        }
        /// <summary>
        ///获取分页数据
        /// </summary>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageCount">页大小</param>
        /// <param name="specification">条件</param>
        /// <param name="orderByExpressions">是否排序</param>
        /// <returns>实体的分页数据</returns>
        public PagedList <TEntity> GetPaged(int pageIndex, int pageCount, ISpecification <TEntity> specification,
                                            SortExpression <TEntity> orderByExpressions = null)
        {
            if (pageIndex == 0)
            {
                pageIndex = 1;
            }
            var set   = GetAllMatching(specification);
            int totel = set.Count();
            IEnumerable <TEntity> items;

            if (orderByExpressions != null && orderByExpressions.IsNeedSort())
            {
                items = orderByExpressions.BuildSort(set).Skip(pageCount * (pageIndex - 1)).Take(pageCount);
            }
            else
            {
                items = set.OrderByDescending(item => item.Id).Skip(pageCount * (pageIndex - 1)).Take(pageCount);
            }
            return(new PagedList <TEntity>(totel, pageCount, pageIndex, items.ToList()));
        }