Author: marek
Date: 2007-08-22 08:18:30 -0400 (Wed, 22 Aug 2007)
New Revision: 84612
Modified:
trunk/mcs/class/System.Core/System.Linq/ChangeLog
trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
Log:
2007-08-22 Marek Safar <[EMAIL PROTECTED]>
* Enumerable.cs: More SelectionMany.
Modified: trunk/mcs/class/System.Core/System.Linq/ChangeLog
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/ChangeLog 2007-08-22 12:04:57 UTC
(rev 84611)
+++ trunk/mcs/class/System.Core/System.Linq/ChangeLog 2007-08-22 12:18:30 UTC
(rev 84612)
@@ -1,3 +1,7 @@
+2007-08-22 Marek Safar <[EMAIL PROTECTED]>
+
+ * Enumerable.cs: More SelectionMany.
+
2007-08-21 Marek Safar <[EMAIL PROTECTED]>
* AOrderedEnumerable: New abstract base.
Modified: trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/Enumerable.cs 2007-08-22
12:04:57 UTC (rev 84611)
+++ trunk/mcs/class/System.Core/System.Linq/Enumerable.cs 2007-08-22
12:18:30 UTC (rev 84612)
@@ -2116,14 +2116,36 @@
throw new ArgumentNullException();
int counter = 0;
- foreach (TSource element in source)
- {
- foreach (TResult item in selector(element, counter))
+ foreach (TSource element in source) {
+ foreach (TResult item in selector(element, counter++))
yield return item;
counter++;
}
}
+
+ public static IEnumerable<TResult> SelectMany<TSource, TCollection,
TResult> (this IEnumerable<TSource> source,
+ Func<TSource, IEnumerable <TCollection>> collectionSelector,
Func <TSource, TCollection, TResult> selector)
+ {
+ if (source == null || collectionSelector == null || selector ==
null)
+ throw new ArgumentNullException ();
+
+ foreach (TSource element in source)
+ foreach (TCollection collection in collectionSelector
(element))
+ yield return selector (element, collection);
+ }
+ public static IEnumerable<TResult> SelectMany<TSource, TCollection,
TResult> (this IEnumerable<TSource> source,
+ Func<TSource, int, IEnumerable <TCollection>>
collectionSelector, Func <TSource, TCollection, TResult> selector)
+ {
+ if (source == null || collectionSelector == null || selector ==
null)
+ throw new ArgumentNullException ();
+
+ int counter = 0;
+ foreach (TSource element in source)
+ foreach (TCollection collection in collectionSelector
(element, counter++))
+ yield return selector (element, collection);
+ }
+
#endregion
#region Single
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches