diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs index f9ef8c86e0..68ff261588 100644 --- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/EfCoreAsyncQueryableProvider.cs @@ -1,5 +1,7 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; @@ -16,19 +18,332 @@ namespace Volo.Abp.EntityFrameworkCore return queryable.Provider is EntityQueryProvider; } + public Task ContainsAsync(IQueryable queryable, T item, CancellationToken cancellationToken = default) + { + return queryable.ContainsAsync(item, cancellationToken); + } + + public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return queryable.AnyAsync(predicate, cancellationToken); + } + + public Task AllAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return queryable.AllAsync(predicate, cancellationToken); + } + public Task CountAsync(IQueryable queryable, CancellationToken cancellationToken = default) { return queryable.CountAsync(cancellationToken); } - public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) + public Task CountAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) { - return queryable.ToListAsync(cancellationToken); + return queryable.CountAsync(predicate, cancellationToken); + } + + public Task LongCountAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.LongCountAsync(cancellationToken); + } + + public Task LongCountAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return queryable.LongCountAsync(predicate, cancellationToken); + } + + public Task FirstAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.FirstAsync(cancellationToken); + } + + public Task FirstAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return queryable.FirstAsync(predicate, cancellationToken); } public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) { return queryable.FirstOrDefaultAsync(cancellationToken); } + + public Task FirstOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + return queryable.FirstOrDefaultAsync(predicate, cancellationToken); + } + + public Task LastAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.LastAsync(cancellationToken); + } + + public Task LastAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return queryable.LastAsync(predicate, cancellationToken); + } + + public Task LastOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.LastOrDefaultAsync(cancellationToken); + } + + public Task LastOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + return queryable.LastOrDefaultAsync(predicate, cancellationToken); + } + + public Task SingleAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SingleAsync(cancellationToken); + } + + public Task SingleAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return queryable.SingleAsync(predicate, cancellationToken); + } + + public Task SingleOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SingleOrDefaultAsync(cancellationToken); + } + + public Task SingleOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + return queryable.SingleOrDefaultAsync(predicate, cancellationToken); + } + + public Task MinAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.MinAsync(cancellationToken); + } + + public Task MinAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.MinAsync(selector, cancellationToken); + } + + public Task MaxAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.MaxAsync(cancellationToken); + } + + public Task MaxAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.MaxAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.SumAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return queryable.AverageAsync(selector, cancellationToken); + } + + public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.ToListAsync(cancellationToken); + } + + public Task ToArrayAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return queryable.ToArrayAsync(cancellationToken); + } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs index 8b0c56c812..a2bca09bdc 100644 --- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs +++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/MongoDbAsyncQueryableProvider.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; @@ -17,19 +18,337 @@ namespace Volo.Abp.MongoDB return queryable.Provider.GetType().Namespace?.StartsWith("MongoDB") ?? false; } + protected IMongoQueryable GetMongoQueryable(IQueryable queryable) + { + return (IMongoQueryable) queryable; + } + + public Task ContainsAsync(IQueryable queryable, T item, CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).Contains(item)); + } + + public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AnyAsync(predicate, cancellationToken); + } + + public Task AllAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).All(predicate)); + } + public Task CountAsync(IQueryable queryable, CancellationToken cancellationToken = default) { - return ((IMongoQueryable) queryable).CountAsync(cancellationToken); + return GetMongoQueryable(queryable).CountAsync(cancellationToken); } - public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) + public Task CountAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).CountAsync(predicate, cancellationToken); + } + + public Task LongCountAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).LongCountAsync(cancellationToken); + } + + public Task LongCountAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).LongCountAsync(predicate, cancellationToken); + } + + public Task FirstAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).FirstAsync(cancellationToken); + } + + public Task FirstAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) { - return ((IMongoQueryable) queryable).ToListAsync(cancellationToken); + return GetMongoQueryable(queryable).FirstAsync(predicate, cancellationToken); } public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) { - return ((IMongoQueryable) queryable).FirstOrDefaultAsync(cancellationToken); + return GetMongoQueryable(queryable).FirstOrDefaultAsync(cancellationToken); + } + + public Task FirstOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).FirstOrDefaultAsync(predicate, cancellationToken); + } + + public Task LastAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).Last()); + } + + public Task LastAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).Last(predicate)); + } + + public Task LastOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).LastOrDefault()); + } + + public Task LastOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).LastOrDefault(predicate)); + } + + public Task SingleAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SingleAsync(cancellationToken); + } + + public Task SingleAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SingleAsync(predicate, cancellationToken); + } + + public Task SingleOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SingleOrDefaultAsync(cancellationToken); + } + + public Task SingleOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SingleOrDefaultAsync(predicate, cancellationToken); + } + + public Task MinAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).MinAsync(cancellationToken); + } + + public Task MinAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).MinAsync(selector, cancellationToken); + } + + public Task MaxAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).MaxAsync(cancellationToken); + } + + public Task MaxAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).MaxAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).SumAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).AverageAsync(selector, cancellationToken); + } + + public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return GetMongoQueryable(queryable).ToListAsync(cancellationToken); + } + + public Task ToArrayAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + return Task.FromResult(GetMongoQueryable(queryable).ToArray()); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs index 3548f81ad1..f5b3cf3a6d 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/AsyncQueryableExecuter.cs @@ -1,5 +1,7 @@ +using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; @@ -15,9 +17,36 @@ namespace Volo.Abp.Linq Providers = providers; } - public virtual Task CountAsync( - IQueryable queryable, - CancellationToken cancellationToken = default) + protected virtual IAsyncQueryableProvider FindProvider(IQueryable queryable) + { + return Providers.FirstOrDefault(p => p.CanExecute(queryable)); + } + + public Task ContainsAsync(IQueryable queryable, T item, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.ContainsAsync(queryable, item, cancellationToken) + : Task.FromResult(queryable.Contains(item)); + } + + public Task AnyAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AnyAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.Any(predicate)); + } + + public Task AllAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AllAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.All(predicate)); + } + + public Task CountAsync(IQueryable queryable, CancellationToken cancellationToken = default) { var provider = FindProvider(queryable); return provider != null @@ -25,19 +54,47 @@ namespace Volo.Abp.Linq : Task.FromResult(queryable.Count()); } - public virtual Task> ToListAsync( - IQueryable queryable, - CancellationToken cancellationToken = default) + public Task CountAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) { var provider = FindProvider(queryable); return provider != null - ? provider.ToListAsync(queryable, cancellationToken) - : Task.FromResult(queryable.ToList()); + ? provider.CountAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.Count(predicate)); } - public virtual Task FirstOrDefaultAsync( - IQueryable queryable, - CancellationToken cancellationToken = default) + public Task LongCountAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.LongCountAsync(queryable, cancellationToken) + : Task.FromResult(queryable.LongCount()); + } + + public Task LongCountAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.LongCountAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.LongCount(predicate)); + } + + public Task FirstAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.FirstAsync(queryable, cancellationToken) + : Task.FromResult(queryable.First()); + } + + public Task FirstAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.FirstAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.First(predicate)); + } + + public Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) { var provider = FindProvider(queryable); return provider != null @@ -45,9 +102,447 @@ namespace Volo.Abp.Linq : Task.FromResult(queryable.FirstOrDefault()); } - protected virtual IAsyncQueryableProvider FindProvider(IQueryable queryable) + public Task FirstOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) { - return Providers.FirstOrDefault(p => p.CanExecute(queryable)); + var provider = FindProvider(queryable); + return provider != null + ? provider.FirstOrDefaultAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.FirstOrDefault(predicate)); + } + + public Task LastAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.LastAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Last()); + } + + public Task LastAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.LastAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.Last(predicate)); + } + + public Task LastOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.LastOrDefaultAsync(queryable, cancellationToken) + : Task.FromResult(queryable.LastOrDefault()); + } + + public Task LastOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.LastOrDefaultAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.LastOrDefault(predicate)); + } + + public Task SingleAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SingleAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Single()); + } + + public Task SingleAsync(IQueryable queryable, Expression> predicate, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SingleAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.Single(predicate)); + } + + public Task SingleOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SingleOrDefaultAsync(queryable, cancellationToken) + : Task.FromResult(queryable.SingleOrDefault()); + } + + public Task SingleOrDefaultAsync(IQueryable queryable, Expression> predicate, + CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SingleOrDefaultAsync(queryable, predicate, cancellationToken) + : Task.FromResult(queryable.SingleOrDefault(predicate)); + } + + public Task MinAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.MinAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Min()); + } + + public Task MinAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.MinAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Min(selector)); + } + + public Task MaxAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.MaxAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Max()); + } + + public Task MaxAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.MaxAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Max(selector)); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Sum()); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task SumAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.SumAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Sum(selector)); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, cancellationToken) + : Task.FromResult(queryable.Average()); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task AverageAsync(IQueryable queryable, Expression> selector, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.AverageAsync(queryable, selector, cancellationToken) + : Task.FromResult(queryable.Average(selector)); + } + + public Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.ToListAsync(queryable, cancellationToken) + : Task.FromResult(queryable.ToList()); + } + + public Task ToArrayAsync(IQueryable queryable, CancellationToken cancellationToken = default) + { + var provider = FindProvider(queryable); + return provider != null + ? provider.ToArrayAsync(queryable, cancellationToken) + : Task.FromResult(queryable.ToArray()); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs index 0a19318c40..7273754b77 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableExecuter.cs @@ -1,25 +1,398 @@ +using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; +using JetBrains.Annotations; namespace Volo.Abp.Linq { public interface IAsyncQueryableExecuter { + #region Contains + + Task ContainsAsync( + [NotNull] IQueryable queryable, + [NotNull] T item, + CancellationToken cancellationToken = default); + + #endregion + + #region Any/All + + Task AnyAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + Task AllAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Count/LongCount + Task CountAsync( - IQueryable queryable, - CancellationToken cancellationToken = default - ); + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task CountAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + + Task LongCountAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task LongCountAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region First/FirstOrDefault + + Task FirstAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task FirstAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); - Task> ToListAsync( - IQueryable queryable, - CancellationToken cancellationToken = default - ); Task FirstOrDefaultAsync( - IQueryable queryable, - CancellationToken cancellationToken = default - ); + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task FirstOrDefaultAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Last/LastOrDefault + + Task LastAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task LastAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + + Task LastOrDefaultAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task LastOrDefaultAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Single/SingleOrDefault + + Task SingleAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task SingleAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + Task SingleOrDefaultAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + Task SingleOrDefaultAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Min + + Task MinAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task MinAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region Max + + Task MaxAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task MaxAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region Sum + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region Average + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region ToList/Array + + Task> ToListAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task ToArrayAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + #endregion } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs index 43d8b6d40e..ce62ea738c 100644 --- a/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs +++ b/framework/src/Volo.Abp.Threading/Volo/Abp/Linq/IAsyncQueryableProvider.cs @@ -1,18 +1,400 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; +using JetBrains.Annotations; namespace Volo.Abp.Linq { public interface IAsyncQueryableProvider { bool CanExecute(IQueryable queryable); - - Task CountAsync(IQueryable queryable, CancellationToken cancellationToken = default); - Task> ToListAsync(IQueryable queryable, CancellationToken cancellationToken = default); + #region Contains - Task FirstOrDefaultAsync(IQueryable queryable, CancellationToken cancellationToken = default); + Task ContainsAsync( + [NotNull] IQueryable queryable, + [NotNull] T item, + CancellationToken cancellationToken = default); + + #endregion + + #region Any/All + + Task AnyAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + Task AllAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Count/LongCount + + Task CountAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task CountAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + + Task LongCountAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task LongCountAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region First/FirstOrDefault + + Task FirstAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task FirstAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + + Task FirstOrDefaultAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task FirstOrDefaultAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Last/LastOrDefault + + Task LastAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task LastAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + + Task LastOrDefaultAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task LastOrDefaultAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Single/SingleOrDefault + + Task SingleAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task SingleAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + Task SingleOrDefaultAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + Task SingleOrDefaultAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> predicate, + CancellationToken cancellationToken = default); + + #endregion + + #region Min + + Task MinAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task MinAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region Max + + Task MaxAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task MaxAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region Sum + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task SumAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region Average + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable source, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + + Task AverageAsync( + [NotNull] IQueryable queryable, + [NotNull] Expression> selector, + CancellationToken cancellationToken = default); + + #endregion + + #region ToList/Array + + Task> ToListAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + + Task ToArrayAsync( + [NotNull] IQueryable queryable, + CancellationToken cancellationToken = default); + + #endregion } -} \ No newline at end of file +}