Sfoglia il codice sorgente

Streamline overloads for Except, Intersect, and Union.

Bart De Smet 7 anni fa
parent
commit
7b84d0a23f

+ 1 - 1
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Except.cs

@@ -18,7 +18,7 @@ namespace System.Linq
             if (second == null)
                 throw Error.ArgumentNull(nameof(second));
 
-            return first.Except(second, EqualityComparer<TSource>.Default);
+            return new ExceptAsyncIterator<TSource>(first, second, EqualityComparer<TSource>.Default);
         }
 
         public static IAsyncEnumerable<TSource> Except<TSource>(this IAsyncEnumerable<TSource> first, IAsyncEnumerable<TSource> second, IEqualityComparer<TSource> comparer)

+ 1 - 1
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Intersect.cs

@@ -18,7 +18,7 @@ namespace System.Linq
             if (second == null)
                 throw Error.ArgumentNull(nameof(second));
 
-            return first.Intersect(second, EqualityComparer<TSource>.Default);
+            return new IntersectAsyncIterator<TSource>(first, second, EqualityComparer<TSource>.Default);
         }
 
         public static IAsyncEnumerable<TSource> Intersect<TSource>(this IAsyncEnumerable<TSource> first, IAsyncEnumerable<TSource> second, IEqualityComparer<TSource> comparer)

+ 6 - 1
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Union.cs

@@ -18,7 +18,7 @@ namespace System.Linq
             if (second == null)
                 throw Error.ArgumentNull(nameof(second));
 
-            return first.Union(second, EqualityComparer<TSource>.Default);
+            return UnionCore(first, second, EqualityComparer<TSource>.Default);
         }
 
         public static IAsyncEnumerable<TSource> Union<TSource>(this IAsyncEnumerable<TSource> first, IAsyncEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
@@ -30,6 +30,11 @@ namespace System.Linq
             if (comparer == null)
                 throw Error.ArgumentNull(nameof(comparer));
 
+            return UnionCore(first, second, comparer);
+        }
+
+        private static IAsyncEnumerable<TSource> UnionCore<TSource>(IAsyncEnumerable<TSource> first, IAsyncEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
+        {
             return first is UnionAsyncIterator<TSource> union && AreEqualityComparersEqual(comparer, union._comparer) ? union.Union(second) : new UnionAsyncIterator2<TSource>(first, second, comparer);
         }