Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Découvrir LINQ en C#

Utiliser les méthodes d'Enumerable

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Vous allez maintenant passer aux méthodes statiques de la classe statique Enumerator. Vous allez ainsi générer des collections à partir de rien.
09:33

Transcription

J'ai nettoyé ici un peu mon affichage pour vous parler de trois méthodes supplémentaires qui sont disponibles. Uniquement en tant que méthode statique, de la classe statique énumérable, et donc, comme ce sont des méthodes statiques, d'une classe statique, on ne va pas pouvoir les utiliser ici, par exemple, avec ma collection de sessions. Donc on ne va pas pouvoir les utiliser avec une collection existante, bien sûr. Mais on va pouvoir les utiliser pour générer des collections. Alors, premier exemple, je prends donc ma classe statique énumérable, qui est disponible dans le Namespace Linq, et j'ai une première méthode statique qui s'appelle, alors, vous allez rire, elle s'appelle simplement Empty. Et vous voyez que c'est un générique, donc elle va prendre un type, et je vais dire, allez, je vais générer une collection vide, c'est-à-dire un IEnumerable vide de session, pratique, non ? Hein, oui. Donc, j'ai maintenant un IEnumerable de session, avec rien dedans, à quoi ça sert ? Eh bien, par exemple, ça pourrait servir à la méthode Aggregates, qu'on vient de voir. Vous vous souvenez, on peut passer en premier paramètre un seed, on pourrait créer un IEnumerable vide de session, et puis ensuite dans la partie d'agrégation, remplir petit à petit cette collection vide. Voilà une idée d'utilisation, en attendant on est d'accord, ça ne va pas être tous les jours. Ensuite, je commande ceci, pour vous le laisser. Deuxième méthode à disposition, c'est la méthode Range. Elle est très simple, elle fait comme son nom l'indique, une rangée d'entiers, avec une valeur de départ et une valeur d'arrivée. Je vais mettre par exemple plutôt zéro ici. Et voilà, c'est tout. Qu'est-ce que j'obtiens ? Un IEnumerable d'entiers, Int32. Voilà, une collection de nombres, zéro, un, deux, trois, quatre, etc. Ça peut toujours servir. Troisième cas, non pas un Range, mais un Repeat. Repeat, c'est, on va répéter un certain nombre de fois, quelque chose. Par exemple, ceci va être dix fois la valeur 1, donc un IEnumerable de dix éléments, qui vont contenir 1, chaque fois, dix fois 1. 1, c'est quoi ? C'est un entier, le compilateur va inférer le type par rapport au littéral que je place ici. Et donc automatiquement, ça va être un IEnumerable d'entiers. Tout simplement, je peux, si je le souhaite, utiliser Repeat en spécifiant le type de données, et donc, je pourrai faire par exemple, un Repeat de sessions. À ce moment-là, ici je ferai un new Session, je fais une initialisation automatique de ces membres, par exemple, le titre est égal à Coucou. Et puis voilà, je ne suis pas forcément obligé de mettre explicitement le type. Puisqu'une fois de plus, le compilateur peut l'inférer, c'est comme vous aimez. Dans certains cas, si le compilateur a de la peine, eh bien, vous précisez explicitement, le type du résultat, et donc ça nous donne un IEnumerable de session. On va légitimement se demander, est-ce qu'on ne pourrait pas faire quelque chose d'intéressant avec ça ? Par exemple, on pourrait répéter des valeurs aléatoires, on va faire ça. On va créer un objet Random, l'objet Random a une méthode qui s'appelle Next, et qui retourne, alors il faut peut-être que je fasse un New ici, ça serait mieux, voilà, et qui retourne, comme son nom l'indique, un nombre aléatoire non négatif, ça, c'est sympa, et, on pourrait se dire, tiens, tiens, tiens, pourquoi ne pas faire ça ? Alors, ça, pas besoin, le compilateur va très bien comprendre. Et puis ici, on fait donc r.Next, et on aurait, allez, dix nombres aléatoires dans un IEnumerable, allez, on essaie. On va se mettre ici. Et, c'est parti. Alors, donc, dans notre résultat, on a un IEnumerable, et, eh bien, pas terrible, il n'y a rien dedans. Ah zut, en fait, on ne peut pas faire ça comme ça. Parce que le Repeat va prendre une valeur spécifique, l'évaluer une seule fois, et puis la répéter dix fois. Et là, même, d'ailleurs, on a fait un appel de méthode, ça n'a pas vraiment marché. On aurait plus besoin d'un littéral, de quelque chose comme ça. Et donc, on ne peut pas faire une répétition comme ça, en disant, eh bien, il va appeler dix fois la méthode Next, de mon objet Random, ça ne va pas marcher. Donc, est-ce qu'on est perdu ? On va réfléchir un petit peu. On n'est pas forcément perdu, et on peut faire quelque chose comme ceci. Alors, on s'en va. Et ici, eh bien, je vais faire ça. Je vais dire, je ne vais pas passer en paramètre l'appel de la méthode, mais je vais passer en paramètre, la méthode elle-même. Bon, là, on est d'accord, Visual Studio est perdu. Il me dit, je ne peux pas déduire le type de mon premier paramètre, à partir de l'utilisation, spécifier les arguments de type de façon explicite. Pas de problème, donc je vais venir ici, et je vais lui dire, moi je veux quelque chose qui va être quoi ? Eh bien, vous avez une notation particulière qui vous permet de référencer un type fonction, et ça s'appelle Func. Je veux une fonction, et en fait, je crée un délégué. Et une fonction de quel type ? Donc, c'est un délégué ici, avec un générique. Je vais dire, bah oui, une fonction qui retourne un entier. Donc, je définis ceci, comme étant un type fonction, et donc, je vais permettre l'appel du délégué, c'est-à-dire finalement, je vais donner, l'adresse de cette fonction. Et maintenant, mon Repeat va aller appeler l'adresse de cette fonction dix fois, pour revenir avec le résultat. Et vous allez me dire, ça ne va pas marcher, parce que mon Repeat ici, il ne va appeler qu'une seule fois ceci. On a vu qu'il répétait dix fois, mais en fait, dix fois la même chose. Attendez, ce n'est pas fini, parce que je peux le forcer. Je vais faire un Select derrière, et comme mon Select ici, va appeler une fonction anonyme, également, une lambda, donc je vais prendre ça, eh bien, ma fonction anonyme va faire quoi ? Appeler l'élément, c'est-à-dire, je fais un appel de fonction, qui est en fait l'adresse du Next, et donc le Select va l'appeler en boucle. Sioux, non ? On essaie. Attention, donc je suis dans résultat, et, pas mal non ? Voilà, une liste de dix nombres aléatoires. Entre nous, puisque c'est assez intelligent, comme méthode, on va dire. On peut faire aussi avec un Range, vous vous souvenez de ça ? Je le prends, je le remets ici. Et puis, je commande ceci, je décommande. Mon Range va me retourner ici, de zéro à 10, donc dix valeurs. Qu'est-ce que je vais faire avec ce Range ? Ça va être un IEnumerable, n'est-ce pas ? Eh bien, puisque c'est un IEnumerable, pourquoi ne pourrais-je pas utiliser la même technique ? C'est-à-dire, générer un Select, qui va boucler avec une fonction anonyme. Donc, je refais un lambda, en disant, là, par exemple, i, est quoi ? Un r.Next, je génère, dix fois l'appel, et je récupère la valeur, dans un résultat qui va être un IEnumerable d'entiers. Vous allez voir, je vous montre, je vous prouve que ça marche. C'est parti, et mon résultat est également un IEnumerable de valeurs aléatoires. Vous voyez ce qui est intéressant, c'est que ça aide à penser de façon, on va dire, un peu déclarative, pour générer derrière du code répétitif, qui va être généré par le compilateur. Mais en envoyant facilement des fonctions anonymes à l'aide d'expressions lambda. Donc, voilà, comment vous pourriez générer, à partir de rien, des collections, par exemple de nombres aléatoires.

Découvrir LINQ en C#

Apprenez à manipuler des éléments de collection de façon déclarative avec LINQ. Étudiez la syntaxe, l’utilisation de la clause Where et la projection, triez les résultats, etc.

2h34 (31 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :19 janv. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !