Découvrir LINQ en C#

Utiliser des regroupements avec des jointures

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Vous allez voir comment mélanger le regroupement avec des jointures, pour récupérer une liste d'éléments venant de la deuxième collection.
05:23

Transcription

Je vous propose de terminer sur l'histoire des regroupements, par une petite discussion, une petite réflexion sur, eh bien, regroupement et jointure. J'ai fait un petit squelette de requêtes ici, alors, ouvrez bien vos yeux, est-ce que ça vous paraît logique ? Je fais un from, je fais un join, donc parents et enfants, et puis, ici, je vais plutôt faire un regroupement par villes, tiens. Et je vais dire OK, tu fais un groupe de P. Par ville, into g, et puis ensuite on va prendre la clé, donc la ville, et puis on va avoir la liste des enfants. Alors c'est surtout ça, regardez ça, est-ce qu'à votre avis, ça va marcher ? Parce qu'on est en train de se dire, je vous ai dit que group, by, into g, ça cachait tout ce qui venait avant. Tout ce qui venait, vraiment, est-ce que ça cache ? Que ça, puisqu'on fait un group by p, est-ce que ça cache ça aussi ? Il serait assez logique que ça le fasse, quand même. Parce que le problème, c'est que si ça ne le cache pas, comment est-ce qu'on va trouver les enfants qui correspondent aux parents ? Donc, dans l'effet ceci, ça ne me donne pas grand chose. Le mot E n'existe pas dans le contexte actuel, ah. Comment est-ce qu'on va faire ça ? Comment est-ce qu'on va récupérer des informations ? Des enfants, pour dire, bien je voudrais avoir le nom des enfants. Parce que là, c'était facile, j'avais une seule collection. Maintenant, j'ai fait une jointure entre les deux, et j'aimerai passer quelque chose dans le regroupement. Eh bien, première chose, j'aimerai passer dans mon regroupement des informations de villes, des enfants, est-ce que je ne pourrai pas faire un résultat intermédiaire, qui me permettrait ensuite de regrouper ? Pourquoi pas, n'est-ce pas ? Allez, on se met là, et on dit from join, et pourquoi ne pas faire un Select ici, qui fasse un Select new, et dans lequel je crée une classe anonyme, qui me retourne les informations qui m'intéresse, par exemple, ville. C'es la ville des parents. Ensuite, enfant, c'est le nom de l'enfant, OK ? Et ici, comment est-ce que je vais référencer alors mon Select ? Eh bien, avec un Into, dans lequel, voilà, je vais placer le résultat de mon Select. Je vais peut-être l'appeler ville et enfant, allez V, E, et maintenant je fais quoi ? Je fais un groupe VE, By VE, ville, c'est-à-dire, ceci, Into g, aha, et maintenant j'ai un key, et puis je vais reprendre ici mon VE. Et faire un Select de mes, ça s'appelle enfants ici, de mes enfants. Est-ce que ça marche ? On essaie. Alors non, puisque je me suis trompé misérablement, c'est G, voilà. Et nous voici de nouveau à notre point de réussite, c'est-à-dire à Nantes, On a Rose, Mathieu et Cerise, alors ça c'est logique. Parce qu'on a pas du tout de Graz, vous voyez qu'Anne et Sylvie, qui habitent toutes les deux à Graz, n'ont pas d'enfants. J'ai fait une jointure interne, ici, donc je ne trouve que Nantes. Finalement, Rose, Mathieu et Cerise, vivent, OK, CQFD. Donc, c'est pas mal, on est contents, mais entre nous, ça ne vous rappelle pas quelque chose ? Si vous rafraîchissez votre mémoire, on ne vient pas de voir il y a quelques vidéos, l'idée de faire des group join ? Ah oui, peut-être. Peut-être que faire un group join, ce serait un petit peu plus facile. Et, justement, fait pour ça que ceci. Donc, on peut garder ça, sans problème, c'est très joli. Mais on va quand même faire, un commentaire et puis on va s'appliquer à refaire finalement notre group join, pour faire la différence. Et on avait dit from p in parents, on a toujours notre join ici, mais on se souvient, qu'on faisait quelque chose comme ça, ensuite on enlève notre group by, et on faisait quoi ? Eh bien, par exemple, un where, pour simuler notre, ici, jointure interne. Where, VE, 40 est plus grand que zéro. Je ne veux pas les villes où il n'y a pas d'enfants. D'accord, et, puis maintenant je prends ma clé, et je peux directement dire P ville. Et puis les enfants, eh bien, je reprends mon VE, vous vous souvenez, Select, Et puis je prends le nom de mes enfants, est-ce que ça marche ? Eh bien, presque, quand même, parce que, OK, c'est logique. Parce que mon group join, est fait sur le parent Id, et donc, sur l'Id du parent, et j'ai deux parents à Id différents, j'affiche la même ville, mais je n'ai pas tout à fait le même résultat que mon regroupement. Parce qu'ici, je regroupe quelque part par Id, au lieu de regrouper par villes. Donc il y a quand même une différence syntaxique qui peut, nous rendre intéressant la connaissance de cette syntaxe, en faisant des group by, ou de cette syntaxe, en faisant des group join, selon, bien sûr, notre critère de jointure.

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 !