Découvrir LINQ en C#

Utiliser les méthodes d'extraction d'éléments

Testez gratuitement nos 1246 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Passez en revue quelques méthodes permettant d'extraire un élément de la collection, en indiquant ou non des critères de filtre.
06:35

Transcription

Maintenant, on va faire un peu d'extraction, d'extraction de quoi ? Bien, pas comme avec le select de quelque chose qui est à l'intérieur de nos objets dans notre collection, mais une extraction des éléments de notre collection, c'est-à-dire, par exemple ici, je veux récupérer seulement cette classe anonyme. Comment je vais faire ? Alors là, j'ai déjà un squelette, et je vais dire, OK, Anne à Graz, c'est un, deux, trois, donc c'est la troisième, et je vais dire simplement Element, At, alors attention, ElementAt 3 ou à 2 ? Base zéro, base un, allez, vous vous en doutez. Base zéro, donc ElementAt0, la première, ElementAt4, la dernière, ah bah non, autant pour moi, ElementAt3, la dernière. Mais on va rester avec ce 4 d'ailleurs, il est très bien. Donc, vous avez compris, ceci extrait simplement ma classe anonyme, ici, spécifiquement, enfin bref, l'élément à l'intérieur de la collection, que j'indique par son index, ce qui est pratique. Parce que tout type d'IEnumerable n'a pas un index. Je ne vais pas pouvoir extraire par index certains types de collections. Donc Linq va me permettre de le faire quel que soit le type de collection qui donc implémente IEnumerable. Et donc, si je fais ça, j'ai une erreur. Enfin, en tout cas, une exception qui est de type ArgumentOutOfRange, Très bien. C'est dommage, est-ce qu'on peut utiliser Linq pour nous donner quelque chose de plus sympathique ? On peut faire un ElementAtOrDefault, ce qui veut dire, retourne-moi l'élément à la position 4, ou s'il n'y a rien, ne me fait pas une erreur, mais retourne-moi la valeur par défaut, du type d'IEnumerable. Ici, on a des classes anonymes, quelle est la valeur par défaut d'une classe anonyme ? Comme tout type, référence finalement, c'est null. Si j'avais par exemple, un tableau d'entiers, la valeur par défaut, ce serait zéro. Donc ici, on a un null, et pas d'exception, ça peut servir. Je vais garder ça. Et puis, on va utiliser, alors encore plus facile, vous vous en doutez, first, allez, on va directement aussi à last, qui vont nous retourner, eh bien évidemment, ça ne va pas m'aider donc je vous le mettrai après, bien entendu. Donc first, Martin, à Nantes, d'accord. Si vous voulez le first dans un ordre particulier, il est évident que vous allez faire comme ceci. Et puis on va prendre, et on va d'ailleurs dire, Orderbydescending, comme ceci, et donc on a bien sûr, Sylvie, qui est la première par ordre descendant des Id. Donc, facile, et donc je garde ça, on a également un last, c'est évident, qui nous donne toujours Sylvie à Graz, même chose. Alors, vous pouvez utiliser first et last, je vais prendre uniquement last. Vous avez compris que le principe est le même pour first. Je peux passer à last, mais en filtre. Et ça c'est pratique, je peux passer donc un first, un filtre, je peux passer à last, un filtre. Je peux lui dire, par exemple, donne-moi dans cette collection, le dernier élément qui correspond à un critère de recherche. Je vais reprendre mon Id de ville, donc, la dernière personne qui vit à Graz. C'est toujours Sylvie, évidemment, vous avez compris, on fait la première et on va trouver Anne. Très bien. Et alors, quand on ne trouve pas ? Parce que, je garde ça aussi. Quand on ne trouve pas, par exemple, on va dire allez, trouve-moi la dernière qui vit à San Francisco. Et on va me dire, ouille ? InvalidOperationException, une exception à nouveau. Vous vous dites, n'y a-t-il pas un LastOrDefault ? Bien sûr, vous avez un FirstOrDefault, p, un LastOrDefault. Facile, null dans ce cas-là. Allez, un petit dernier, je garde ça également. Vous avez une méthode d'extraction qui s'appelle Single. Et vous lui passez un critère de recherche, par exemple, ville est à Graz. Alors vous vous dites, oula, attention. Je veux un Single, donc un seul élément, quand la ville est Graz, je vais en avoir deux. Est-ce que ça passe ? Et, si oui, lequel va-t-il choisir ? Attention, ah non ! Pourquoi ? Parce que la séquence contient plusieurs éléments qui correspondent. Alors, le Single veut absolument avoir seulement une correspondance. Vous cherchez vraiment un Single par rapport à un critère de recherche qui va être unique à travers votre collection. Sinon, ça ne marche pas, donc par exemple ici, je pourrai faire Id. Ça marcherait, donc le Single va vous retourner une exception dans deux cas. Il n'a rien trouvé, exception, il a trouvé plus que 1, exception également. Donc évidemment, vous vous doutez, on va faire un SingleOrDefault. Est-ce que ça marche ? Ah, toujours pas ! Non, parce que SingleOrDefault, ça veut dire, si tu en as trouvé un, c'est bon. Si tu en as trouvé zéro, null, sinon, toujours une exception. Ce qui est plus ou moins logique, on veut vraiment savoir s'il n'y en a qu'un ou pas. Donc je vais dire, je ne sais pas moi, Shmutz. Ce n'est sans doute pas une ville qui existe. Je serai le premier étonné, mais enfin, et hop là, j'ai bien sûr un null. Mais vous ne pouvez pas l'utiliser quand vous savez qu'il y en a plusieurs, ou en tout cas, quand il peut y en avoir plusieurs, que vous le sachiez ou pas.

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
Votre/vos formateur(s) :
Date de parution :19 janv. 2016
Durée :2h34 (31 vidéos)

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 !