Lire en anglais

Partager via


List<T>.RemoveAll(Predicate<T>) Méthode

Définition

Supprime tous les éléments qui correspondent aux conditions définies par le prédicat spécifié.

C#
public int RemoveAll (Predicate<T> match);

Paramètres

match
Predicate<T>

Délégué Predicate<T> qui définit les conditions des éléments à supprimer.

Retours

Nombre d’éléments supprimés du List<T>.

Exceptions

match a la valeur null.

Exemples

L’exemple suivant illustre la RemoveAll méthode et plusieurs autres méthodes qui utilisent le Predicate<T> délégué générique.

Un List<T> de chaînes est créé, contenant 8 noms de dinosaures, dont deux (aux positions 1 et 5) se terminent par « saurus ». L’exemple définit également une méthode de prédicat de recherche nommée EndsWithSaurus, qui accepte un paramètre de chaîne et retourne une valeur booléenne indiquant si la chaîne d’entrée se termine par « saurus ».

Les Findméthodes , FindLastet FindAll sont utilisées pour rechercher dans la liste avec la méthode de prédicat de recherche.

La RemoveAll méthode est utilisée pour supprimer toutes les entrées se terminant par « saurus ». Il traverse la liste depuis le début, passant chaque élément à son tour à la EndsWithSaurus méthode . L’élément est supprimé si la EndsWithSaurus méthode retourne true.

Notes

En C# et Visual Basic, il n’est pas nécessaire de créer le Predicate<string> délégué (Predicate(Of String) en Visual Basic) explicitement. Ces langages déduisent le délégué correct à partir du contexte et le créent automatiquement.

Enfin, la Exists méthode vérifie qu’il n’y a aucune chaîne dans la liste qui se termine par « saurus ».

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

Remarques

est Predicate<T> un délégué à une méthode qui retourne true si l’objet qui lui a été transmis correspond aux conditions définies dans le délégué. Les éléments du actuel List<T> sont transmis individuellement au Predicate<T> délégué, et les éléments qui correspondent aux conditions sont supprimés du List<T>.

Cette méthode effectue une recherche linéaire ; Par conséquent, cette méthode est une opération O(n), où n est Count.

S’applique à

Produit Versions
.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

Voir aussi