Ejemplo n.º 1
0
 public static async Task <List <T> > ToListAsync <T>(this IEnumerableAsync <T> enumerable, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var enumerator = await enumerable.GetEnumeratorAsync(cancellationToken).ConfigureAwait(false))
     {
         return(await enumerator.ToListAsync(cancellationToken).ConfigureAwait(false));
     }
 }
Ejemplo n.º 2
0
        public static async Task ForEachAsync <T>(this IEnumerableAsync <T> list, Func <T, Task> func)
        {
            var enumerator = await list.GetEnumeratorAsync();

            while (await enumerator.MoveNextAsync())
            {
                await func(enumerator.Current);
            }
        }
        private IEnumerable <IPackageSearchMetadata> ConvertToEnumerable(IEnumerableAsync <IPackageSearchMetadata> packagesAsync)
        {
            var enumeratorAsync = packagesAsync.GetEnumeratorAsync();

            var packages = new List <IPackageSearchMetadata>();

            if (enumeratorAsync == null)
            {
                return(Enumerable.Empty <IPackageSearchMetadata>());
            }

            while (enumeratorAsync.MoveNextAsync().ConfigureAwait(false).GetAwaiter().GetResult())
            {
                packages.Add(enumeratorAsync.Current);
            }

            return(packages);
        }
Ejemplo n.º 4
0
        public static async Task <T> SingleAsync <T>(this IEnumerableAsync <T> enumerable, CancellationToken cancellationToken = default(CancellationToken))
        {
            using (var enumerator = await enumerable.GetEnumeratorAsync(cancellationToken).ConfigureAwait(false))
            {
                if (await enumerator.MoveNextAsync(cancellationToken).ConfigureAwait(false))
                {
                    var value = enumerator.Current;

                    if (await enumerator.MoveNextAsync(cancellationToken).ConfigureAwait(false))
                    {
                        throw MoreThanOneElement();
                    }

                    return(value);
                }
                else
                {
                    throw EmptySequence();
                }
            }
        }