Langage C# – FindAll(…) ou Where(…) sur les collections pour filtrer ?

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) :

IEnumerable<int> oListeEntiersPairs = oListeEntiers.Where(i => i % 2 == 0);
// ou
List<int> oListeEntiersPairs = oListeEntiers.FindAll(i => i % 2 == 0);

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.

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j’alterne les missions de formation et d’ingénierie avec cette plateforme. J’écris ce blog pour transmettre mes connaissances à tout développeur, qu’il soit débutant ou expérimenté.