Comment utiliser la méthode SelectMany avec C# et .NET

Le billet d’aujourd’hui est à propos d’une méthode du framework .NET. SelectMany, vous connaissez? Pour ma part, je le connaissais seulement de par son nom. Surtout par ce qu’elle est très près de Select dans l’IntelliSense.

select

Ironiquement, c’est souvent de cette façon-là que je découvre de nouvelles fonctionnalités dans le framework .NET. Dans mon scénario, j’avais besoin de retrouver tous les départements liés à une collection d’utilisateurs.

Pour donner une idée, la structure de données et son initialisation prennent approximativement cette forme:

Mon premier réflexe, afin de récupérer la liste de tous les départements, aurait été de faire une boucle comme celle-ci.

Comme dirait l’autre: « Ça marche!« . Le seul problème que j’ai toujours eu avec cette approche c’est que c’est laid. C’est fonctionnel, mais c’est laid pareil.

Ceci étant dit, c’est à partir de cet instant que j’ai tenté de voir s’il n’y avait pas mieux. C’est en faisant mes recherches et, notamment, en utilisant les mots clés « C# LINQ List of List » que mon attention a été attirée vers SelectMany.

Je suis trop bon à Google, n’est-ce pas?

Comme la documentation MSDN le spécifie, SelectMany permet d’aplatir un résultat qui contient une liste d’une liste en une seule liste. Aussi simple que ça. Cependant, elle permet de faire un peu plus que cela. Par exemple, il est possible d’inclure des données de la collection parente dans la liste qui sera aplatie.

En reprenant l’initialisation mentionnée précédemment, considérez le code suivant.

Va permettre de retourner de l’information comme ceci.

selectmany

Voilà, c’est tout!

Advertisements

3 avis sur « Comment utiliser la méthode SelectMany avec C# et .NET »

  1. Allov dit :

    Ta première boucle fait pas la même chose (te faudrait un Dictionnary ou un Tupple comme t’as fait dans ta deuxième implémentation. De plus, je pense que la première approche est beaucoup plus lisible, mais bon, c’est juste moi :P

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l’aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment ce contenu :