Collection RemoveAll Extension Method
Posted
by João Angelo
on Exceptional Code
See other posts from Exceptional Code
or by João Angelo
Published on Sat, 03 Mar 2012 12:04:31 +0000
Indexed on
2012/03/18
18:18 UTC
Read the original article
Hit count: 313
.NET
|Extension Methods
I had previously posted a RemoveAll
extension method for the Dictionary<K,V>
class, now it’s time to have one for the Collection<T>
class.
The signature is the same as in the corresponding method already available in List<T>
and the implementation relies on the RemoveAt method to perform the actual removal of each element.
Finally, here’s the code:
public static class CollectionExtensions { /// <summary> /// Removes from the target collection all elements that match the specified predicate. /// </summary> /// <typeparam name="T">The type of elements in the target collection.</typeparam> /// <param name="collection">The target collection.</param> /// <param name="match">The predicate used to match elements.</param> /// <exception cref="ArgumentNullException"> /// The target collection is a null reference. /// <br />-or-<br /> /// The match predicate is a null reference. /// </exception> /// <returns>Returns the number of elements removed.</returns> public static int RemoveAll<T>(this Collection<T> collection, Predicate<T> match) { if (collection == null) throw new ArgumentNullException("collection"); if (match == null) throw new ArgumentNullException("match"); int count = 0; for (int i = collection.Count - 1; i >= 0; i--) { if (match(collection[i])) { collection.RemoveAt(i); count++; } } return count; } }
© Exceptional Code or respective owner