|  |  |  | @ -26,415 +26,458 @@ namespace Volo.Abp.Domain.Repositories | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Any/All | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<bool> AnyAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<bool> AnyAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AnyAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AnyAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<bool> AllAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<bool> AllAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AllAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AllAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Count/LongCount | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<int> CountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<int> CountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.CountAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.CountAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<int> CountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<int> CountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.CountAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.CountAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<long> LongCountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<long> LongCountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.LongCountAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.LongCountAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<long> LongCountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<long> LongCountAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.LongCountAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.LongCountAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region First/FirstOrDefault | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> FirstAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> FirstAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.FirstAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.FirstAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> FirstAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> FirstAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.FirstAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.FirstAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> FirstOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> FirstOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.FirstOrDefaultAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.FirstOrDefaultAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> FirstOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> FirstOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.FirstOrDefaultAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.FirstOrDefaultAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Last/LastOrDefault | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> LastAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> LastAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.LastAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.LastAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> LastAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> LastAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.LastAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.LastAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> LastOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> LastOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.LastOrDefaultAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.LastOrDefaultAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> LastOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> LastOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.LastOrDefaultAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.LastOrDefaultAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Single/SingleOrDefault | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> SingleAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> SingleAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SingleAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SingleAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> SingleAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> SingleAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SingleAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SingleAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> SingleOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> SingleOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SingleOrDefaultAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SingleOrDefaultAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> SingleOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> SingleOrDefaultAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, bool>> predicate, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SingleOrDefaultAsync(repository, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SingleOrDefaultAsync(queryable, predicate, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Min | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> MinAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> MinAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.MinAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.MinAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<TResult> MinAsync<T, TResult>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<TResult> MinAsync<T, TResult>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, TResult>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.MinAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.MinAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Max | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T> MaxAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T> MaxAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.MaxAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.MaxAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<TResult> MaxAsync<T, TResult>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<TResult> MaxAsync<T, TResult>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, TResult>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.MaxAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.MaxAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Sum | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<decimal> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<decimal> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, decimal>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<decimal?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<decimal?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, decimal?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<int> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<int> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, int>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<int?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<int?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, int?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<long> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<long> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, long>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<long?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<long?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, long?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, double>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, double?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<float> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<float> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, float>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<float?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<float?> SumAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, float?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.SumAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.SumAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region Average | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<decimal> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<decimal> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, decimal>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<decimal?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<decimal?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, decimal?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, int>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, int?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, long>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, long?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, double>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<double?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<double?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, double?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<float?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<float?> AverageAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] Expression<Func<T, float?>> selector, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.AverageAsync(repository, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.AverageAsync(queryable, selector, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #region ToList/Array | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<List<T>> ToListAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<List<T>> ToListAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.ToListAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.ToListAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         public static Task<T[]> ToArrayAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |         public static async Task<T[]> ToArrayAsync<T>( | 
			
		
	
		
			
				
					|  |  |  |  |             [NotNull] this IReadOnlyRepository<T> repository, | 
			
		
	
		
			
				
					|  |  |  |  |             CancellationToken cancellationToken = default) | 
			
		
	
		
			
				
					|  |  |  |  |             where T : class, IEntity | 
			
		
	
		
			
				
					|  |  |  |  |         { | 
			
		
	
		
			
				
					|  |  |  |  |             return repository.AsyncExecuter.ToArrayAsync(repository, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |             var queryable = await repository.GetQueryableAsync(); | 
			
		
	
		
			
				
					|  |  |  |  |             return await repository.AsyncExecuter.ToArrayAsync(queryable, cancellationToken); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         #endregion | 
			
		
	
	
		
			
				
					|  |  |  | 
 |