Pour obtenir un sous-ensemble de données ou d’objets d’une collection, les collections génériques de type List proposent deux méthodes : FindAll et Where. Par exemple, pour obtenir la liste des nombres entiers pairs contenus dans la liste oListeEntiers, nous pouvons écrire (au choix) :
[cc lang= »csharp »]
IEnumerable oListeEntiersPairs = oListeEntiers.Where(i => i % 2 == 0);
// ou
List oListeEntiersPairs = oListeEntiers.FindAll(i => i % 2 == 0);
[/cc]
Voici un tableau récapitulatif des différences entre ceux deux instructions :

En conclusion, voici ma réponse à la question « sur une collection générique de type List, dois-je utiliser la méthode FindAll ou Where ? » : vous souhaitez obtenir un sous-ensemble d’une liste à partir d’un critère de filtre de manière immédiate et performante, utilisez la méthode FindAll.