/// <summary>
 /// 使用Include委托实现Include机制
 /// </summary>
 /// <param name="useInclude"></param>
 /// <returns></returns>
 private IQueryable <Y> Include <Y>(IQueryable <Y> inputSource, IncludeDel <Y> useInclude = null)
     where Y : class
 {
     if (null == useInclude)
     {
         return(inputSource);
     }
     else
     {
         return(useInclude(inputSource));
     }
 }
        /// <summary>
        /// 泛型分页查询
        /// </summary>
        /// <typeparam name="Y"></typeparam>
        /// <param name="inputSource"></param>
        /// <param name="usePage"></param>
        /// <param name="pageSize"></param>
        /// <param name="useWhere"></param>
        /// <param name="useInclude"></param>
        /// <returns></returns>
        private PagePacker <Y> GetPage <Y>
            (IQueryable <Y> inputSource, int usePage, int pageSize,
            Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null
            , string inputPropertyName            = null, bool ifASC = true)
            where Y : class
        {
            //输入检查
            if (usePage <= 0 || pageSize <= 0)
            {
                return(null);
            }

            PagePacker <Y> returnValue = new PagePacker <Y>();

            //计算总数量
            int tempTotalCount = GetCountMethodGeneric(inputSource, useWhere).Result;

            //计算总页数
            int tempTotalPage = 0 == tempTotalCount % pageSize ? tempTotalCount / pageSize :
                                tempTotalCount / pageSize + 1;

            //校验页索引
            if (usePage > tempTotalPage)
            {
                usePage = tempTotalPage;
            }


            //若没有数据
            if (usePage == 0)
            {
                returnValue.TotalCount  = 0;
                returnValue.TotalPage   = 0;
                returnValue.Values      = new List <Y>();
                returnValue.CurrentPage = 0;
                returnValue.PageSize    = 0;
                return(returnValue);
            }

            //获取数据
            var tempValue = GetPageValueMethodGeneric
                                (inputSource, (usePage - 1) * pageSize, pageSize, useWhere, useInclude, inputPropertyName, ifASC).Result;

            //数值回写
            returnValue.TotalCount  = tempTotalCount;
            returnValue.TotalPage   = tempTotalPage;
            returnValue.Values      = tempValue;
            returnValue.CurrentPage = usePage;
            returnValue.PageSize    = pageSize;

            return(returnValue);
        }
 /// <summary>
 /// GetAllNio
 /// </summary>
 /// <param name="useWhere"></param>
 /// <returns></returns>
 private async Task <List <X> > GetAllMethod(Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null, string inputPropertyName = null, bool ifASC = true)
 {
     return(await GetAllMethodGeneric(m_useDB, useWhere, useInclude, inputPropertyName, ifASC));
 }
 /// <summary>
 /// FindFirstNio
 /// </summary>
 /// <param name="useWhere"></param>
 /// <returns></returns>
 private async Task <X> FindFirstMethod(Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null)
 {
     return(await FindFirstMethodGeneric(m_useDB, useWhere, useInclude));
 }
        /// <summary>
        /// 附带转换机制的分页查询 用于boostrap
        /// </summary>
        /// <typeparam name="Y">转换后的类型</typeparam>
        /// <param name="useTransformer">使用的转换机制(如group操作)</param>
        /// <param name="usePage">查询的页数</param>
        /// <param name="pageSize">每页的容量</param>
        /// <param name="useWhere">使用的过滤条件</param>
        /// <param name="useInclude">使用的Include委托</param>
        public PagePackerBoostrap <Y> GetPageBootstrap <Y>(Func <IQueryable <X>, IQueryable <Y> > useTransformer, int usePage, int pageSize, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null, string inputPropertyName = null
                                                           , bool ifASC = true) where Y : class
        {
            var tempPage = GetPage(useTransformer(m_useDB), usePage, pageSize, useWhere, useInclude, inputPropertyName, ifASC);

            return(new PagePackerBoostrap <Y>()
            {
                Total = tempPage.TotalCount, Rows = tempPage.Values
            });
        }
        /// <summary>
        /// 分页查询 用于boostrap
        /// </summary>
        /// <param name="usePage">查询的页数</param>
        /// <param name="pageSize">每页的容量</param>
        /// <param name="useWhere">使用的过滤条件</param>
        /// <param name="useInclude">使用的Include委托</param>
        public PagePackerBoostrap <X> GetPageBootstrap(int usePage, int pageSize, Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null, string inputPropertyName = null
                                                       , bool ifASC = true)
        {
            var tempPage = GetPage(m_useDB, usePage, pageSize, useWhere, useInclude, inputPropertyName, ifASC);

            return(new PagePackerBoostrap <X>()
            {
                Total = tempPage.TotalCount, Rows = tempPage.Values
            });
        }
Esempio n. 7
0
 /// <summary>
 /// 附带转换机制的获取第一个
 /// </summary>
 /// <typeparam name="Y">转换后的类型</typeparam>
 /// <param name="useTransformer">使用的转换机制(如group操作)</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public Y FindFirst <Y>(Func <IQueryable <X>, IQueryable <Y> > useTransformer, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null)
     where Y : class
 {
     return(m_coreRepository.FindFirst(useTransformer, useWhere, useInclude));
 }
 /// <summary>
 /// 附带转换机制的获取全部
 /// </summary>
 /// <typeparam name="Y">转换后的类型</typeparam>
 /// <param name="useTransformer">使用的转换机制(如group操作)</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public List <Y> GetAll <Y>(Func <IQueryable <X>, IQueryable <Y> > useTransformer, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null, string inputPropertyName = null
                            , bool ifASC = true)
     where Y : class
 {
     return(GetAllMethodGeneric(useTransformer(m_useDB), useWhere, useInclude, inputPropertyName, ifASC).Result);
 }
 /// <summary>
 /// 获取全部
 /// </summary>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public List <X> GetAll(Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null, string inputPropertyName = null
                        , bool ifASC = true)
 {
     return(GetAllMethod(useWhere, useInclude, inputPropertyName, ifASC).Result);
 }
 /// <summary>
 /// 分页查询
 /// </summary>
 /// <param name="usePage">查询的页数</param>
 /// <param name="pageSize">每页的容量</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public PagePacker <X> GetPage(int usePage, int pageSize, Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null, string inputPropertyName = null
                               , bool ifASC = true)
 {
     return(GetPage(m_useDB, usePage, pageSize, useWhere, useInclude, inputPropertyName, ifASC));
 }
Esempio n. 11
0
 /// <summary>
 /// 寻找所有
 /// </summary>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <returns></returns>
 public List <X> GetAll(Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null)
 {
     return(m_coreRepository.GetAll(useWhere, useInclude));
 }
Esempio n. 12
0
 /// <summary>
 /// 寻找符合条件的第一个
 /// </summary>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <returns></returns>
 public X FindFirst(Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null)
 {
     return(m_coreRepository.FindFirst(useWhere, useInclude));
 }
Esempio n. 13
0
 /// <summary>
 /// 分页查询
 /// </summary>
 /// <param name="usePage">查询的页数</param>
 /// <param name="pageSize">每页的容量</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public PagePacker <Y> GetPage <Y>(Func <IQueryable <X>, IQueryable <Y> > useTransformer, int usePage, int pageSize, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null)
     where Y : class
 {
     return(m_coreRepository.GetPage(useTransformer, usePage, pageSize, useWhere, useInclude));
 }
 /// <summary>
 /// FindFirstNio泛型方式
 /// </summary>
 /// <param name="useWhere"></param>
 /// <returns></returns>
 private async Task <Y> FindFirstMethodGeneric <Y>(IQueryable <Y> inputSource, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null)
     where Y : class
 {
     if (null == useWhere)
     {
         return(await Include(inputSource, useInclude).FirstOrDefaultAsync());
     }
     else
     {
         return(await Include(inputSource, useInclude).FirstOrDefaultAsync(useWhere));
     }
 }
 /// <summary>
 /// 附带转换机制的获取第一个
 /// </summary>
 /// <typeparam name="Y">转换后的类型</typeparam>
 /// <param name="useTransformer">使用的转换机制(如group操作)</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public Y FindFirst <Y>(Func <IQueryable <X>, IQueryable <Y> > useTransformer, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null)
     where Y : class
 {
     return(FindFirstMethodGeneric(useTransformer(m_useDB), useWhere, useInclude).Result);
 }
        /// <summary>
        /// 获得分页数据NIO方法 泛型方式
        /// </summary>
        /// <param name="skipValue"></param>
        /// <param name="takeValue"></param>
        /// <param name="useWhere"></param>
        /// <returns></returns>
        private async Task <List <Y> > GetPageValueMethodGeneric <Y>
            (IQueryable <Y> inputSource, int skipValue, int takeValue, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null
            , string inputPropertyName = null, bool ifASC = true)
            where Y : class
        {
            var useValue = Include(inputSource, useInclude);

            if (null != useWhere)
            {
                useValue = useValue.Where(useWhere);
            }

            //获取排序
            var tempOrderFunc = ExpressionUtility.GetOrderByFunc <Y>(inputPropertyName, ifASC);

            if (null != tempOrderFunc)
            {
                useValue = tempOrderFunc(useValue);
            }

            //Nio
            return(await useValue.Skip(skipValue).Take(takeValue).ToListAsync());
        }
 /// <summary>
 /// 分页查询
 /// </summary>
 /// <param name="usePage">查询的页数</param>
 /// <param name="pageSize">每页的容量</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public PagePacker <Y> GetPage <Y>(Func <IQueryable <X>, IQueryable <Y> > useTransformer, int usePage, int pageSize, Expression <Func <Y, bool> > useWhere = null, IncludeDel <Y> useInclude = null, string inputPropertyName = null
                                   , bool ifASC = true)
     where Y : class
 {
     return(GetPage(useTransformer(m_useDB), usePage, pageSize, useWhere, useInclude, inputPropertyName, ifASC));
 }
 /// <summary>
 /// 获取第一个
 /// </summary>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <param name="useInclude">使用的Include委托</param>
 /// <returns></returns>
 public X FindFirst(Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null)
 {
     return(FindFirstMethod(useWhere, useInclude).Result);
 }
Esempio n. 19
0
 /// <summary>
 /// 分页查询
 /// </summary>
 /// <param name="usePage">当前页</param>
 /// <param name="pageSize">页容量</param>
 /// <param name="useWhere">使用的过滤条件</param>
 /// <returns></returns>
 public PagePacker <X> GetPage(int usePage, int pageSize, Expression <Func <X, bool> > useWhere = null, IncludeDel <X> useInclude = null)
 {
     return(m_coreRepository.GetPage(usePage, pageSize, useWhere, useInclude));
 }