Découvrir LINQ en C#

Tester la présence d'éléments

Testez gratuitement nos 1246 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Découvrez les méthodes All, Any, Contains et SequenceEqual, pour tester la présence d'éléments dans une collection.
05:43

Transcription

Dans cette vidéo, je vais utiliser du LINQ, non pas pour retourner un IEnumerable, comme on l'a fait depuis maintenant un nombre très important de vidéos, mais pour tester. Et donc c'est pour ça que j'ai fait un petit nettoyage de mon code dans LINQPad, et j'ai fait un squelette ici, pour dire « If », « my » quelque chose on va voir, eh bien je vais faire un Dump. Ça me permettra de tester une ou deux méthodes LINQ, et la première, on va dire celle qu'on va utiliser le plus souvent s'appelle « Any ». « Any », on va lui passer un lambda, parent, on va dire par exemple, p, et on va lui passer donc une fonction anonyme en délégué. Pour que Any aille tester chaque élément de ma collection parent, et voir quelque chose, donc tester une expression pour voir si elle est vraie. Par exemple, je vais dire, eh bien, est-ce que... il y a au moins, donc any, au moins un élément, dont le nom est égal à... on va mettre, Anne. On essaie. Très bien, donc if any, je fais un Dump de tout, c'est pour ça que j'ai tout, vous avec compris. Mais LINQ a trouvé à l'intérieur qu'il y avait, au moins, un élément de la liste qui, dans sa classe anonyme, avait comme nom Anne. Magnifique. Je peux poser la question différemment, alors attendez. Est-ce qu'à votre avis, - réfléchissons un peu - ceci, vous allez tous dire non, C# est un langage Case Sensitive, on est d'accord. Faites attention à ça, bien entendu. Et donc, vous allez faire quelque chose comme ça, qui va fonctionner. Alors, je ne vous dis pas, entre parenthèses, que toutes ces méthodes ici sont hyper rapides. Alors peut-être que si vous avez des collections très importantes, et que vous allez utiliser ce type de méthode, peut-être que les performances ne seront pas aussi bonnes que si vous utilisez, par exemple, des méthodes non LINQ. Pour faire ce genre de choses, ou même parfois des boucles, parenthèse refermée, à vous de voir. Je me garde ceci, et puis, je vous montre la deuxième, qui est All. Vous vous en doutiez presque un peu. All, c'est, eh bien... est-ce que je peux trouver ici pour l'exemple quelque chose qui est vrai dans tous les cas ? On pourrait dire qu'il y a un nom. Alors, on va faire comme ça. Et on va dire que la longueur du nom est plus grand que zéro. Donc il faut que tous les éléments de la collection retournent vrais à ce critère, pour que ça soit vrai, OK. Troisième méthode intéressante, finalement je vais garder ça sans le commenter, c'est la méthode Contains. Est-ce que dans mes éléments, il est contenu quelque chose ? Et là, j'abandonne ma syntaxe lambda, et je vais donner quelque chose à manger, du genre, un objet anonyme, alors je vais prendre n'importe quoi ici. Ce sera quand même plus pratique, je ne vous le cache pas, quand on a des collections de type simple. Par exemple, des collections d'entiers, et puis on dit, est-ce que ça contient 1 ? Voyez, là, c'est quand même plus facile. Ici, bon pour mon exemple, je vais tricher un petit peu, je vais refaire une classe anonyme au passage, en mettant la même chose que Anne. Et on va voir si ça marche. Donc vous voyez, j'ai un deuxième résultat pour celui-ci, ça marche. Il va donc y avoir une comparaison. Vous voyez aussi que, C# est intelligent, il est capable de faire une conversion d'une classe anonyme en, on va dire, un autre type. Enfin, c'est de type anonyme, donc il est finalement capable de dire, oui, c'est anonyme, mais c'est le même type quand même parce qu'on va dire que c'est une forme de ce qu'on appelle du duck typing, je ne sais pas si vous connaissez le terme. Alors, très courte parenthèse : Duck typing, c'est : si ça ressemble à un canard, c'est sûrement un canard. Donc, c'est du typage canard. Ça veut dire qu'ici, on a une forme de typage canard quand même. On dit, ça, ça ressemble quand même à ça. Donc on va dire que c'est la même chose. Bon, parenthèse refermée. Donc, on va utiliser ça assez souvent, pour dire : j'ai une instance de ma classe, est-ce qu'elle est déjà dans une collection ? Et on va faire un Contains. Dernière méthode, pas forcément toujours utilisée, une méthode qui s'appelle SequenceEquals, et, bon là, je vais être un peu paresseux, je vais lui envoyer la même chose. Vous avez compris le sens, ça veut dire : est-ce que parent est égal, totalement égal, à parent ? C'est-à-dire, est-ce qu'on a la même séquence, des mêmes objets, etc. ? Si c'est oui, eh bien, on va faire un Dump. Alors là j'ai une parenthèse à rajouter, pour que ça marche, voilà. Et je me suis trompé de syntaxe, SequenceEqual, pardon, Et voilà, bon. SequenceEqual va vous permettre de comparer deux collections, pour savoir si elles sont exactement les mêmes, avec les mêmes types au même endroit. Par contre, il apparaît que ce n'est pas non plus la méthode la plus rapide de l'univers, donc si vous avez besoin de faire ce genre de choses pour des types simples, regardez les performances quand vos collections sont importantes. Ça peut valoir la peine d'utiliser une méthode que vous feriez vous-même avec une boucle, tester les choses, mais un peu lentes. Donc voilà pour ça, quelques méthodes LINQ pour tester finalement la présence ou l'égalité de deux collections.

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 !