mardi 30 septembre 2008

Trier et filtrer une liste en C#

Il fallait bien que ça arrive voilà c'est le premier (d'une longue série j'espère) : un article pour les geek de la programmation !

Aujourd'hui nous allons apprendre à trier une liste (youpi). Il y a encore de ça quelques temps, lorsque l'on souhaitait trier un tableau on employait les célèbres techniques de triage (trie à bulle, trie par sélection, trie par insertion pour ne citer qu'eux.) Ces algorithmes étaient ma foi fort pratique mais un peu long à écrire (plus d'info). Maintenant avec Microsoft .Net c'est fini ! On utilise une liste typé et dedans ya plein de jolies méthodes pour faire le boulot. On peut trier et filtrer en une seule ligne. La preuve en exemple :

Imaginons une classe Personne ayant un attribut "dateNaissance". On peut créer une liste de personne :

List maListe;
// On veut trier par date de naissance les personnes dans la liste :
maListe.Sort(delegate(Personne p1, Personne p2)
{
return p1.dateNaissance.CompareTo(p2.dateNaissance);
}

Et voilà votre liste de personne est maintenant triée par date de naissance. Imaginons maintenant que l'on souhaite récupérer toutes les personnes ayant plus de 70 ans :

List maListeDeVieux = maListe.FindAll(delegate(Personne p)
{ return p.age > 70; });

Plutôt simple non ?

2 commentaires:

Anonyme a dit…

j'ai rien compris mais bon je suis sure que cette article est très intéressant...

Dr Daniel Jackson a dit…

Mais il faut expliquer aussi se qu'est un "delegate" sinon personne va comprendre ^^.
Et si on couple tous ca avec un yield, la ca devient très puissant. Mais peut être que nous verrons ca dans un autre article.
Merci toto ;)