diff options
author | Jb Evain <jbevain@gmail.com> | 2008-06-24 23:50:15 +0400 |
---|---|---|
committer | Jb Evain <jbevain@gmail.com> | 2008-06-24 23:50:15 +0400 |
commit | f1530a7b006af2cf71466849ceefff0fa574923c (patch) | |
tree | 1727e431f9107068071ac47e49ec03dc624281ff /mcs/class/System.Core/System.Linq/Enumerable.cs | |
parent | bf8661f78b0b54706ab1d103af92e8e30efaaf2d (diff) |
properly create join iterator
svn path=/trunk/mcs/; revision=106529
Diffstat (limited to 'mcs/class/System.Core/System.Linq/Enumerable.cs')
-rw-r--r-- | mcs/class/System.Core/System.Linq/Enumerable.cs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/mcs/class/System.Core/System.Linq/Enumerable.cs b/mcs/class/System.Core/System.Linq/Enumerable.cs index 660fa6ed05f..457c0a08433 100644 --- a/mcs/class/System.Core/System.Linq/Enumerable.cs +++ b/mcs/class/System.Core/System.Linq/Enumerable.cs @@ -838,6 +838,13 @@ namespace System.Linq if (comparer == null) comparer = EqualityComparer<TKey>.Default; + return CreateJoinIterator (outer, inner, outerKeySelector, innerKeySelector, resultSelector, comparer); + } + + static IEnumerable<TResult> CreateJoinIterator<TOuter, TInner, TKey, TResult> (this IEnumerable<TOuter> outer, + IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, + Func<TInner, TKey> innerKeySelector, Func<TOuter, TInner, TResult> resultSelector, IEqualityComparer<TKey> comparer) + { ILookup<TKey, TInner> innerKeys = ToLookup<TInner, TKey> (inner, innerKeySelector, comparer); /*Dictionary<K, List<U>> innerKeys = new Dictionary<K, List<U>> (); foreach (U element in inner) @@ -861,7 +868,7 @@ namespace System.Linq IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, TInner, TResult> resultSelector) { - return Join<TOuter, TInner, TKey, TResult> (outer, inner, outerKeySelector, innerKeySelector, resultSelector, null); + return outer.Join (inner, outerKeySelector, innerKeySelector, resultSelector, null); } #endregion |