Author: jbevain
Date: 2007-11-08 17:17:20 -0500 (Thu, 08 Nov 2007)
New Revision: 89277
Modified:
trunk/mcs/class/System.Core/System.Linq/ChangeLog
trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
Log:
2007-11-08 Jb Evain <[EMAIL PROTECTED]>
* Enumerable.cs: Implement SequenceEqual.
Modified: trunk/mcs/class/System.Core/System.Linq/ChangeLog
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/ChangeLog 2007-11-08 22:16:53 UTC
(rev 89276)
+++ trunk/mcs/class/System.Core/System.Linq/ChangeLog 2007-11-08 22:17:20 UTC
(rev 89277)
@@ -1,5 +1,9 @@
2007-11-08 Jb Evain <[EMAIL PROTECTED]>
+ * Enumerable.cs: Implement SequenceEqual.
+
+2007-11-08 Jb Evain <[EMAIL PROTECTED]>
+
* Enumerable.cs: Complete Union.
2007-11-08 Jb Evain <[EMAIL PROTECTED]>
Modified: trunk/mcs/class/System.Core/System.Linq/Enumerable.cs
===================================================================
--- trunk/mcs/class/System.Core/System.Linq/Enumerable.cs 2007-11-08
22:16:53 UTC (rev 89276)
+++ trunk/mcs/class/System.Core/System.Linq/Enumerable.cs 2007-11-08
22:17:20 UTC (rev 89277)
@@ -2581,6 +2581,39 @@
#endregion
+ #region SequenceEqual
+
+ public static bool SequenceEqual<TSource> (this
IEnumerable<TSource> first, IEnumerable<TSource> second)
+ {
+ return first.SequenceEqual (second, null);
+ }
+
+ public static bool SequenceEqual<TSource> (this
IEnumerable<TSource> first, IEnumerable<TSource> second,
IEqualityComparer<TSource> comparer)
+ {
+ if (first == null)
+ throw new ArgumentNullException ("first");
+ if (second == null)
+ throw new ArgumentNullException ("second");
+
+ if (comparer == null)
+ comparer = EqualityComparer<TSource>.Default;
+
+ var first_enumerator = first.GetEnumerator ();
+ var second_enumerator = second.GetEnumerator ();
+
+ while (first_enumerator.MoveNext ()) {
+ if (!second_enumerator.MoveNext ())
+ return false;
+
+ if (!comparer.Equals (first_enumerator.Current,
second_enumerator.Current))
+ return false;
+ }
+
+ return !second_enumerator.MoveNext ();
+ }
+
+ #endregion
+
#region Union
public static IEnumerable<TSource> Union<TSource> (this
IEnumerable<TSource> first, IEnumerable<TSource> second)
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches