List<T>.RemoveAll(Predicate<T>) Metodo

Definizione

Rimuove tutti gli elementi che corrispondono alle condizioni definite dal predicato specificato.

public int RemoveAll (Predicate<T> match);

Parametri

match
Predicate<T>

Delegato Predicate<T> che definisce le condizioni degli elementi da rimuovere.

Restituisce

Numero di elementi rimossi da List<T>.

Eccezioni

match è null.

Esempio

Nell'esempio seguente viene illustrato il RemoveAll metodo e diversi altri metodi che usano il Predicate<T> delegato generico.

Viene creato un List<T> di stringhe contenente 8 nomi di dinosauro, due dei quali (in corrispondenza delle posizioni 1 e 5) terminano con "saurus". L'esempio definisce anche un metodo di predicato di ricerca denominato EndsWithSaurus, che accetta un parametro stringa e restituisce un valore booleano che indica se la stringa di input termina con "saurus".

I Findmetodi , FindLaste FindAll vengono usati per eseguire ricerche nell'elenco con il metodo del predicato di ricerca.

Il RemoveAll metodo viene usato per rimuovere tutte le voci che terminano con "saurus". Attraversa l'elenco dall'inizio, passando ogni elemento a sua volta al EndsWithSaurus metodo . L'elemento viene rimosso se il EndsWithSaurus metodo restituisce true.

Nota

In C# e Visual Basic non è necessario creare in modo esplicito il Predicate<string> delegato (Predicate(Of String) in Visual Basic). Questi linguaggi deducono il delegato corretto dal contesto e lo creano automaticamente.

Infine, il Exists metodo verifica che nell'elenco non siano presenti stringhe che terminano con "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)
    {
        return s.ToLower().EndsWith("saurus");
    }
}

/* 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
 */

Commenti

Predicate<T> è un delegato a un metodo che restituisce true se l'oggetto passato corrisponde alle condizioni definite nel delegato. Gli elementi dell'oggetto corrente List<T> vengono passati singolarmente al Predicate<T> delegato e gli elementi che soddisfano le condizioni vengono rimossi da List<T>.

Questo metodo esegue una ricerca lineare; pertanto, questo metodo è un'operazione O(n), dove n è Count.

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Vedi anche