Pārlūkot izejas kodu

Add missing impl

Oren Novotny 9 gadi atpakaļ
vecāks
revīzija
891fbbac98
1 mainītis faili ar 30 papildinājumiem un 102 dzēšanām
  1. 30 102
      Ix.NET/Source/System.Interactive.Async/Lookup.cs

+ 30 - 102
Ix.NET/Source/System.Interactive.Async/Lookup.cs

@@ -175,20 +175,6 @@ namespace System.Linq.Internal
             }
         }
 
-        public IEnumerable<TResult> ApplyResultSelector<TResult>(Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
-        {
-            var g = _lastGrouping;
-            if (g != null)
-            {
-                do
-                {
-                    g = g._next;
-                    g.Trim();
-                    yield return resultSelector(g._key, g._elements);
-                } while (g != _lastGrouping);
-            }
-        }
-
         public IEnumerable<TResult> ApplyResultSelector<TResult>(Func<TKey, IAsyncEnumerable<TElement>, TResult> resultSelector)
         {
             var g = _lastGrouping;
@@ -202,38 +188,7 @@ namespace System.Linq.Internal
                 } while (g != _lastGrouping);
             }
         }
-
-        internal static Lookup<TKey, TElement> Create<TSource>(IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer)
-        {
-            Debug.Assert(source != null);
-            Debug.Assert(keySelector != null);
-            Debug.Assert(elementSelector != null);
-
-            var lookup = new Lookup<TKey, TElement>(comparer);
-            foreach (var item in source)
-            {
-                lookup.GetGrouping(keySelector(item), create: true)
-                      .Add(elementSelector(item));
-            }
-
-            return lookup;
-        }
-
-        internal static Lookup<TKey, TElement> Create(IEnumerable<TElement> source, Func<TElement, TKey> keySelector, IEqualityComparer<TKey> comparer)
-        {
-            Debug.Assert(source != null);
-            Debug.Assert(keySelector != null);
-
-            var lookup = new Lookup<TKey, TElement>(comparer);
-            foreach (var item in source)
-            {
-                lookup.GetGrouping(keySelector(item), create: true)
-                      .Add(item);
-            }
-
-            return lookup;
-        }
-
+        
         internal static async Task<Lookup<TKey, TElement>> CreateAsync<TSource>(IAsyncEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
         {
             Debug.Assert(source != null);
@@ -273,23 +228,7 @@ namespace System.Linq.Internal
             return lookup;
         }
 
-        internal static Lookup<TKey, TElement> CreateForJoin(IEnumerable<TElement> source, Func<TElement, TKey> keySelector, IEqualityComparer<TKey> comparer)
-        {
-            var lookup = new Lookup<TKey, TElement>(comparer);
-            foreach (var item in source)
-            {
-                var key = keySelector(item);
-                if (key != null)
-                {
-                    lookup.GetGrouping(key, create: true)
-                          .Add(item);
-                }
-            }
-
-            return lookup;
-        }
-
-        internal static async Task<Lookup<TKey, TElement>> CreateForJoinAsync(IAsyncEnumerable<TElement> source, Func<TElement, TKey> keySelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
+         internal static async Task<Lookup<TKey, TElement>> CreateForJoinAsync(IAsyncEnumerable<TElement> source, Func<TElement, TKey> keySelector, IEqualityComparer<TKey> comparer, CancellationToken cancellationToken)
         {
             var lookup = new Lookup<TKey, TElement>(comparer);
             using (var enu = source.GetEnumerator())
@@ -358,25 +297,6 @@ namespace System.Linq.Internal
             return (key == null) ? 0 : _comparer.GetHashCode(key) & 0x7FFFFFFF;
         }
 
-        internal TResult[] ToArray<TResult>(Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
-        {
-            var array = new TResult[Count];
-            var index = 0;
-            var g = _lastGrouping;
-            if (g != null)
-            {
-                do
-                {
-                    g = g._next;
-                    g.Trim();
-                    array[index] = resultSelector(g._key, g._elements);
-                    ++index;
-                } while (g != _lastGrouping);
-            }
-
-            return array;
-        }
-
         internal TResult[] ToArray<TResult>(Func<TKey, IAsyncEnumerable<TElement>, TResult> resultSelector)
         {
             var array = new TResult[Count];
@@ -396,24 +316,6 @@ namespace System.Linq.Internal
             return array;
         }
 
-
-        internal List<TResult> ToList<TResult>(Func<TKey, IEnumerable<TElement>, TResult> resultSelector)
-        {
-            var list = new List<TResult>(Count);
-            var g = _lastGrouping;
-            if (g != null)
-            {
-                do
-                {
-                    g = g._next;
-                    g.Trim();
-                    list.Add(resultSelector(g._key, g._elements));
-                } while (g != _lastGrouping);
-            }
-
-            return list;
-        }
-
         internal List<TResult> ToList<TResult>(Func<TKey, IAsyncEnumerable<TElement>, TResult> resultSelector)
         {
             var list = new List<TResult>(Count);
@@ -501,12 +403,38 @@ namespace System.Linq.Internal
 
         Task<List<IAsyncGrouping<TKey, TElement>>> IIListProvider<IAsyncGrouping<TKey, TElement>>.ToListAsync(CancellationToken cancellationToken)
         {
-            throw new NotImplementedException();
+            var list = new List<IAsyncGrouping<TKey, TElement>>(Count);
+            var g = _lastGrouping;
+            if (g != null)
+            {
+                do
+                {
+                    g = g._next;
+                    list.Add(g);
+                }
+                while (g != _lastGrouping);
+            }
+
+            return Task.FromResult(list);
         }
 
         Task<IAsyncGrouping<TKey, TElement>[]> IIListProvider<IAsyncGrouping<TKey, TElement>>.ToArrayAsync(CancellationToken cancellationToken)
         {
-            throw new NotImplementedException();
+            var array = new IAsyncGrouping<TKey, TElement>[Count];
+            var index = 0;
+            var g = _lastGrouping;
+            if (g != null)
+            {
+                do
+                {
+                    g = g._next;
+                    array[index] = g;
+                    ++index;
+                }
+                while (g != _lastGrouping);
+            }
+
+            return Task.FromResult(array);
         }
 
     }