/// <summary>
        /// 分页
        /// </summary>
        /// <param name="source"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static async Task <ShardingPagedResult <T> > ShardingPageResultAsync <T>(this IQueryable <T> source, int pageIndex, int pageSize)
        {
            //设置每次获取多少页
            var take = pageSize <= 0 ? 1 : pageSize;
            //设置当前页码最小1
            var index = pageIndex <= 0 ? 1 : pageIndex;
            //需要跳过多少页
            var skip = (index - 1) * take;
            //获取每次总记录数
            var count = await ShardingQueryable <T> .Create(source).CountAsync();

            //当数据库数量小于要跳过的条数就说明没数据直接返回不在查询list
            if (count <= skip)
            {
                return(new ShardingPagedResult <T>(new List <T>(0), count));
            }
            //获取剩余条数
            int remainingCount = count - skip;
            //当剩余条数小于take数就取remainingCount
            var realTake = remainingCount < take ? remainingCount : take;
            var data     = await ShardingQueryable <T> .Create(source.Skip(skip).Take(realTake)).ToListAsync(realTake);

            return(new ShardingPagedResult <T>(data, count));
        }
 public static double ShardingAverage(this IQueryable <double> source)
 {
     return(ShardingQueryable <double> .Create(source).Average());
 }
 public static async Task <double> ShardingAverageAsync(this IQueryable <double> source)
 {
     return(await ShardingQueryable <double> .Create(source).AverageAsync());
 }
 public static double ShardingSum(this IQueryable <double> source)
 {
     return(ShardingQueryable <double> .Create(source).DoubleSum());
 }
 /// <summary>
 /// 第一条
 /// </summary>
 /// <param name="source"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static async Task <T> ShardingFirstOrDefaultAsync <T>(this IQueryable <T> source)
 {
     return(await ShardingQueryable <T> .Create(source).FirstOrDefaultAsync());
 }
 /// <summary>
 /// 集合
 /// </summary>
 /// <param name="source"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static async Task <List <T> > ToShardingListAsync <T>(this IQueryable <T> source)
 {
     return(await ShardingQueryable <T> .Create(source).ToListAsync());
 }
 public static float ShardingAverage(this IQueryable <float> source)
 {
     return(ShardingQueryable <float> .Create(source).FloatAverage());
 }
 public static int ShardingSum(this IQueryable <int> source)
 {
     return(ShardingQueryable <int> .Create(source).Sum());
 }
 public static long ShardingLongCount <T>(this IQueryable <T> source)
 {
     return(ShardingQueryable <T> .Create(source).LongCount());
 }
Exemplo n.º 10
0
 public static async Task <long> ShardingLongCountAsync <T>(this IQueryable <T> source)
 {
     return(await ShardingQueryable <T> .Create(source).LongCountAsync());
 }
Exemplo n.º 11
0
 /// <summary>
 /// 转成sharding queryable
 /// </summary>
 /// <param name="source"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static IShardingQueryable <T> AsSharding <T>(this IQueryable <T> source)
 {
     return(ShardingQueryable <T> .Create(source));
 }
Exemplo n.º 12
0
 public static async Task <T> ShardingMinAsync <T>(this IQueryable <T> source)
 {
     return(await ShardingQueryable <T> .Create(source).MinAsync());
 }
Exemplo n.º 13
0
 public static T ShardingMin <T>(this IQueryable <T> source)
 {
     return(ShardingQueryable <T> .Create(source).Min());
 }
Exemplo n.º 14
0
 public static async Task <decimal> ShardingAverageAsync(this IQueryable <decimal> source)
 {
     return(await ShardingQueryable <decimal> .Create(source).DecimalAverageAsync());
 }
Exemplo n.º 15
0
 public static async Task <int> ShardingSumAsync(this IQueryable <int> source)
 {
     return(await ShardingQueryable <int> .Create(source).SumAsync());
 }
Exemplo n.º 16
0
 public static decimal ShardingAverage(this IQueryable <decimal> source)
 {
     return(ShardingQueryable <decimal> .Create(source).DecimalAverage());
 }
Exemplo n.º 17
0
 public static long ShardingSum(this IQueryable <long> source)
 {
     return(ShardingQueryable <long> .Create(source).LongSum());
 }
Exemplo n.º 18
0
 public static async Task <float> ShardingAverageAsync(this IQueryable <float> source)
 {
     return(await ShardingQueryable <float> .Create(source).FloatAverageAsync());
 }
Exemplo n.º 19
0
 public static async Task <long> ShardingSumAsync(this IQueryable <long> source)
 {
     return(await ShardingQueryable <long> .Create(source).LongSumAsync());
 }
Exemplo n.º 20
0
 /// <summary>
 /// 分页
 /// </summary>
 /// <param name="source"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static List <T> ToShardingList <T>(this IQueryable <T> source)
 {
     return(ShardingQueryable <T> .Create(source).ToList());
 }
Exemplo n.º 21
0
 public static async Task <bool> ShardingAnyAsync <T>(this IQueryable <T> source, Expression <Func <T, bool> > predicate)
 {
     return(await ShardingQueryable <T> .Create(source.Where(predicate)).AnyAsync());
 }
Exemplo n.º 22
0
 /// <summary>
 /// 分组
 /// </summary>
 /// <param name="source"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static async Task <List <TElement> > ShardingGroupByAsync <T, TKey, TElement>(this IQueryable <T> source,
                                                                                      Expression <Func <T, TKey> > keySelector,
                                                                                      Expression <Func <IGrouping <TKey, T>, TElement> > elementSelector)
 {
     return(await ShardingQueryable <T> .Create(source.GroupBy(keySelector).Select(elementSelector)).ToListAsync());
 }
Exemplo n.º 23
0
 /// <summary>
 /// 第一条
 /// </summary>
 /// <param name="source"></param>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public static T ShardingFirstOrDefault <T>(this IQueryable <T> source)
 {
     return(ShardingQueryable <T> .Create(source).FirstOrDefault());
 }