Découvrir LINQ en C#

Vérifier le type des éléments

Testez gratuitement nos 1324 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez appliquer la méthode OfType pour filtrer les éléments d'une collection non typée. Vous allez conserver uniquement les éléments qui correspondent à un type défini.
05:41

Transcription

Pour finir ce chapitre, restons encore un instant sur la conversion mais dans un autre genre. Juste avant de vous montrer ce que je veux vous montrer, revenons sur une chose : La façon dont nous allons créer nos collections. Je voudrais juste qu'on revoie ensemble un peu une syntaxe particulière. Je ne sais pas si vous en avez l'habitude, c'est pour ça qu'on va revoir ça. Si je veux créer directement ici une liste par exemple. Alors, j'ai fait un « var », j'aurais pu directement dire « List », et ce que je veux faire c'est une liste de « T », donc un générique qui va permettre de fortement typer la liste. Je pourrais faire quelque chose comme ça : « List » ensuite je vais dire « List< string  » et je vais dire, on va faire une « new List< string  » « Ok ». Et ici. Comment est-ce que je vais créer ma List< string ? Je peux faire quelque chose comme ceci et puis maintenant faire des... ... « Add », n'est-ce pas. Mais vous n'avez pas besoin de faire ça. Enfin... Si vous savez déjà quelle est la List que vous voulez créer, que vous voulez l'initialiser en une fois et que finalement vous avez déjà tous les éléments, eh bien vous pouvez utiliser la syntaxe qui est une initialisation de la List comme ceci. En mettant une syntaxe beaucoup plus courte, en disant par exemple « un » « deux » et « trois » et c'est tout. Donc c'est une initialisation automatique avec une syntaxe beaucoup plus claire et beaucoup plus ramassée que des « add » successifs. Et dans les faits, j'ai donc une « List< string  » et est-ce que je peux me passer de ça ? Est-ce que le compilateur peut inférer en voyant par rapport à ça qu'il y a trois strings ? Pas tout à fait. Ici, C# va dire non, je ne peux pas initialiser l'objet « List » avec un initialiseur de collection si tu ne m'as pas dit quel est le type. En d'autres termes, cette syntaxe ne va pas permettre au compilateur de deviner comme ça qu'on fait trois fois des chaînes de caractère donc on veut une « List< string  ». Il faut, à ce moment-là, indiquer spécifiquement en quoi on va typer la « List ». Ça, c'est assez logique. Comment est-ce que je vais faire si je veux une liste d'élément sans leur type ? « List », ça vient de, vous voyez ici, le namespace « System.Collections.Generic ». C'est donc l'invention des génériques dans .NET pour pouvoir exprimer des classes en envoyant un type. spécifique. Mais avant l'invention des génériques, ce qu'on faisait, je vais commenter ceci après l'avoir... ... copié. Ce qu'on faisait, c'est utiliser des collections qui elles ne sont pas « type-safe ». On peut mettre ce qu'on veut à l'intérieur et typiquement quelque chose comme « ArrayList ». Donc « ArrayList », me demande d'utiliser « System Collections » qui n'est pas donc « System.Collections.Generic ». À ce moment-là, un « ArrayList », eh bien, c'est une collection mais je peux mettre plusieurs types de contenus différents. Donc il n'y a pas de sécurité au niveau du type. Elle n'est pas « type-safe », elle n'est pas statiquement typée si vous voulez. Et je peux faire quelque chose comme ça. Alors, outre le fait que autant ne pas utiliser « ArrayList », mais utiliser un générique en spécifiant le type bon ça, c'est de l'acquis, mais si on se retrouve dans ce genre de contexte comment on va faire pour dire moi, je voudrais seulement les chaînes de caractère s'il vous plait. Eh bien on va prendre notre « ArrayList », on va utiliser une méthode LINQ qui s'appelle « OfType ». On va lui indiquer le type qu'on veut extraire, des chaînes de caractère seulement, et c'est tout. Donc, si je fais ça, je vais me retrouver maintenant avec ici un « IEnumerable », le type étant un « System.String ». J'aurais dans les faits filtré ma collection et j'aurais gardé « un », « deux », « trois » seulement. On peut bien entendu maintenant, comme j'ai un « IEnumerable » et vous vous souvenez des méthodes de conversion, faire quelque chose comme ça, « ToArray » par exemple, pour récupérer un tableau de string. Et ce qui est vraiment bien en LINQ c'est qu'on peut continuer à réfléchir comme ça. Avec cette syntaxe de méthode, on peut dire, ok, j'ai mon « ArrayList », ensuite je veux seulement les chaînes, ensuite je veux filtrer. Alors on ferait quoi ? On mettrait quelque chose comme ceci, avec un « where ». Ou on utilise une lambda pour dire je prends ma chaîne et puis maintenant je vais faire une filtre sur, par exemple je vais prendre « ToLower » pour être sûr qu'on fasse une comparaison correcte et je veux seulement que ça corresponde à « un » ou je veux que ça commence ou que ça contienne, par exemple, « un ». Donc, on prend, on convertit, on filtre dans les faits tout ce qui correspond aux strings seulement, on fait une recherche et on retourne en tableau. Un autre exemple, les possibilités merveilleuses qui sont amenées par LINQ pour exprimer des choses complexes en une syntaxe très courte. Donc voilà. Pensez à cette méthode « OfType » si vous vous retrouvez avec des collections qui peuvent contenir des éléments qui sont de types différents.

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 !