Add implemetation for two overloaded 'GroupBy' methods of Enumerable class.
authorRoei Erez <roeie@mono-cvs.ximian.com>
Mon, 19 May 2008 14:50:37 +0000 (14:50 -0000)
committerRoei Erez <roeie@mono-cvs.ximian.com>
Mon, 19 May 2008 14:50:37 +0000 (14:50 -0000)
svn path=/trunk/mcs/; revision=103479

mcs/class/System.Core/System.Linq/ChangeLog
mcs/class/System.Core/System.Linq/Enumerable.cs

index 1c9402857bb81cd8cfe2fac24c0c64580b586656..24f7b01ad420d4a735e71cb3997a8d87aa8e0f64 100644 (file)
@@ -1,3 +1,7 @@
+2008-05-19  Roei Erez  <roeie@mainsoft.com>
+
+       * Enumerable.cs: Implemente two overloaded GroupBy methods.
+
 2008-05-15  Jb Evain  <jbevain@novell.com>
 
        * QueryableEnumerable.cs: Make that the first expression is a constant
index a31c8e7fef933bb7687feb545976b6f72035dfbb..57c7597917154830b3c9ca422420d2f542063a1e 100644 (file)
@@ -733,7 +733,11 @@ namespace System.Linq
                        Func<TKey, IEnumerable<TElement>, TResult> resultSelector,
                        IEqualityComparer<TKey> comparer)
                {
-                       throw new NotImplementedException ();
+                       IEnumerable<IGrouping<TKey, TElement>> groups = GroupBy<TSource, TKey, TElement> (
+                               source, keySelector, elementSelector, comparer);
+
+                       foreach (IGrouping<TKey, TElement> group in groups)
+                               yield return resultSelector (group.Key, group);                 
                }
 
                public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult> (this IEnumerable<TSource> source,
@@ -749,7 +753,10 @@ namespace System.Linq
                        Func<TKey, IEnumerable<TSource>, TResult> resultSelector,
                        IEqualityComparer<TKey> comparer)
                {
-                       throw new NotImplementedException ();
+                       IEnumerable<IGrouping<TKey,TSource>> groups = GroupBy<TSource, TKey> (source, keySelector, comparer);
+
+                       foreach (IGrouping<TKey, TSource> group in groups)
+                               yield return resultSelector (group.Key, group);
                }
 
                #endregion