RemoveAll (Método)

List.RemoveAll (Método)

Quita todos los elementos que cumplen las condiciones definidas por el predicado especificado.

Espacio de nombres: System.Collections.Generic
Ensamblado: mscorlib (en mscorlib.dll)

public int RemoveAll (
	Predicate<T> match
)
public int RemoveAll (
	Predicate<T> match
)
public function RemoveAll (
	match : Predicate<T>
) : int
No aplicable.

Parámetros

match

Delegado Predicate que define las condiciones de los elementos que se van a quitar.

Valor devuelto

Número de elementos que se han quitado de List.

Tipo de excepciónCondición

ArgumentNullException

El valor de match es referencia null (Nothing en Visual Basic).

Predicate es un delegado de un método que devuelve true si el objeto que se le pasa coincide con las condiciones definidas en el delegado. Los elementos del objeto List actual se pasan individualmente al delegado Predicate y aquellos elementos que cumplen las condiciones se quitan de List.

Este método realiza una búsqueda lineal; por lo tanto, este método es una operación O(n), donde n es Count.

En el ejemplo de código siguiente se muestran el método RemoveAll y otros métodos que utilizan el delegado genérico Predicate.

Se crea un objeto List de cadenas, que contiene 8 nombres de dinosaurios, dos de los cuales (en las posiciones 1 y 5) terminan en "saurus". En el ejemplo de código también se define un método de predicado de búsqueda denominado EndsWithSaurus, que acepta un parámetro de cadena y devuelve un valor Boolean que indica si la cadena de entrada termina en "saurus".

Los métodos Find, FindLast y FindAll se utilizan para buscar en la lista con el método de predicado de búsqueda.

El método RemoveAll se utiliza para quitar todas las entradas que finalizan en "saurus." Éste recorre la lista desde el principio y pasa cada elemento al método EndsWithSaurus siguiendo el orden. El elemento se quita si el método EndsWithSaurus devuelve true.

NotaNota:

En C# y Visual Basic, no es necesario crear explícitamente el delegado Predicate<string> (Predicate(Of String) en Visual Basic). Estos lenguajes deducen el delegado correcto a partir del contexto y lo crean automáticamente.

Por último, el método Exists comprueba que en la lista no hay ninguna cadena que termine en "saurus."

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>();

        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Oviraptor");
        dinosaurs.Add("Velociraptor");
        dinosaurs.Add("Deinonychus");
        dinosaurs.Add("Dilophosaurus");
        dinosaurs.Add("Gallimimus");
        dinosaurs.Add("Triceratops");

        Console.WriteLine();
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
            dinosaurs.TrueForAll(EndsWithSaurus));

        Console.WriteLine("\nFind(EndsWithSaurus): {0}", 
            dinosaurs.Find(EndsWithSaurus));

        Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
            dinosaurs.FindLast(EndsWithSaurus));

        Console.WriteLine("\nFindAll(EndsWithSaurus):");
        List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);

        foreach(string dinosaur in sublist)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine(
            "\n{0} elements removed by RemoveAll(EndsWithSaurus).", 
            dinosaurs.RemoveAll(EndsWithSaurus));

        Console.WriteLine("\nList now contains:");
        foreach(string dinosaur in dinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nExists(EndsWithSaurus): {0}", 
            dinosaurs.Exists(EndsWithSaurus));
    }

    // Search predicate returns true if a string ends in "saurus".
    private static bool EndsWithSaurus(String s)
    {
        if ((s.Length > 5) && 
            (s.Substring(s.Length - 6).ToLower() == "saurus"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

/* This code example produces the following output:

Compsognathus
Amargasaurus
Oviraptor
Velociraptor
Deinonychus
Dilophosaurus
Gallimimus
Triceratops

TrueForAll(EndsWithSaurus): False

Find(EndsWithSaurus): Amargasaurus

FindLast(EndsWithSaurus): Dilophosaurus

FindAll(EndsWithSaurus):
Amargasaurus
Dilophosaurus

2 elements removed by RemoveAll(EndsWithSaurus).

List now contains:
Compsognathus
Oviraptor
Velociraptor
Deinonychus
Gallimimus
Triceratops

Exists(EndsWithSaurus): False
 */

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0

.NET Compact Framework

Compatible con: 2.0

XNA Framework

Compatible con: 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2016 Microsoft