Browse Source

Splitting ToArray, ToDictionary, and ToList.

Bart De Smet 8 years ago
parent
commit
8a97fe8fd6

+ 32 - 0
Ix.NET/Source/System.Interactive.Async/ToArray.cs

@@ -0,0 +1,32 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information. 
+
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Linq
+{
+    public static partial class AsyncEnumerable
+    {
+        public static Task<TSource[]> ToArray<TSource>(this IAsyncEnumerable<TSource> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return ToArray(source, CancellationToken.None);
+        }
+
+        public static Task<TSource[]> ToArray<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            if (source is IIListProvider<TSource> arrayProvider)
+                return arrayProvider.ToArrayAsync(cancellationToken);
+
+            return AsyncEnumerableHelpers.ToArray(source, cancellationToken);
+        }
+    }
+}

+ 0 - 46
Ix.NET/Source/System.Interactive.Async/ToCollection.cs → Ix.NET/Source/System.Interactive.Async/ToDictionary.cs

@@ -10,25 +10,6 @@ namespace System.Linq
 {
     public static partial class AsyncEnumerable
     {
-        public static Task<TSource[]> ToArray<TSource>(this IAsyncEnumerable<TSource> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return ToArray(source, CancellationToken.None);
-        }
-
-        public static Task<TSource[]> ToArray<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            if (source is IIListProvider<TSource> arrayProvider)
-                return arrayProvider.ToArrayAsync(cancellationToken);
-
-            return AsyncEnumerableHelpers.ToArray(source, cancellationToken);
-        }
-
         public static Task<Dictionary<TKey, TElement>> ToDictionary<TSource, TKey, TElement>(this IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer)
         {
             if (source == null)
@@ -132,32 +113,5 @@ namespace System.Linq
 
             return source.ToDictionary(keySelector, x => x, EqualityComparer<TKey>.Default, cancellationToken);
         }
-
-        public static Task<List<TSource>> ToList<TSource>(this IAsyncEnumerable<TSource> source)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            return ToList(source, CancellationToken.None);
-        }
-
-        public static Task<List<TSource>> ToList<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
-        {
-            if (source == null)
-                throw new ArgumentNullException(nameof(source));
-
-            if (source is IIListProvider<TSource> listProvider)
-                return listProvider.ToListAsync(cancellationToken);
-
-            return source.Aggregate(
-                new List<TSource>(),
-                (list, x) =>
-                {
-                    list.Add(x);
-                    return list;
-                },
-                cancellationToken
-            );
-        }
     }
 }

+ 40 - 0
Ix.NET/Source/System.Interactive.Async/ToList.cs

@@ -0,0 +1,40 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the Apache 2.0 License.
+// See the LICENSE file in the project root for more information. 
+
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Linq
+{
+    public static partial class AsyncEnumerable
+    {
+        public static Task<List<TSource>> ToList<TSource>(this IAsyncEnumerable<TSource> source)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            return ToList(source, CancellationToken.None);
+        }
+
+        public static Task<List<TSource>> ToList<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken)
+        {
+            if (source == null)
+                throw new ArgumentNullException(nameof(source));
+
+            if (source is IIListProvider<TSource> listProvider)
+                return listProvider.ToListAsync(cancellationToken);
+
+            return source.Aggregate(
+                new List<TSource>(),
+                (list, x) =>
+                {
+                    list.Add(x);
+                    return list;
+                },
+                cancellationToken
+            );
+        }
+    }
+}