linq & les expressions lambda. l language in integrated q query
TRANSCRIPT
Cours techonologies .NET
Linq & les expressions lambda
L •Language
In •Integrated
Q •Query
Qu’est-ce que LINQ
Procéder à des requêtes sur nos objets, comme on le ferait en SQL, au sein même de notre langage de programmation.
Virtuellement, tout ce qu’on sait faire avec SQL peut désormais être réalisé en C#
Linq, à quoi ça sert?
Linq peut s’interfacer avec différentes cibles : ◦ Les collections d’objets implémentant l’interface
IEnumerable : Linq to Object◦ Des données SQL (via Entity Framework) : Linq to
SQL◦ Des flux XML (via les classes Xelement,
XDocument,…) : Linq To XML◦ D’autres encore…
Linq to …
2 syntaxes : ◦ Syntaxe type SQL:
var result = from u in userswhere u.login == ‘‘toto’’ select u.mail;
◦ Syntaxe objet:var result = users.Where(u => u.login == ‘‘toto’’)
.Select(u => u.mail);
Linq, la syntaxe
On appelle cette notation, une expression lambda
Il s’agit de fonctions anonymes pouvant être utilisées comme des variables.
u => u.login == ‘‘toto’’ : ◦ Ici, on définit une fonction prenant en entrée un User et
retournant un booléen◦ Concrètement, pout tout User u, on va tester si on login est égal
à ‘‘toto’’.◦ Les types entrant et sortant sont définis par la méthode Where.
Dans la méthode Select, le paramètre d’entrée est toujours un User mais le paramètre de sortie changera en fonction du champ sélectionné:◦ u => u.mail : Ici, on récupère une string.
Les expressions lambda
Reprenons notre exemple :users.Where(u => u.login == ‘‘toto’’)
.Select(u => u.mail). La syntaxte complète devrait être celle-ci:
users.Where<User>(u => u.login == ‘‘toto’’).Select<User>(u => u.mail).
Les méthodes de Linq sont génériques, elles ont besoin de connaitre le type sur lequel elles travaillent.
Si on peut éviter de le préciser, c’est qu’elle peuvent l’inférer à partir du typage de la collection
Les expressions lambda/Linq
Des questions?
Au travail!
Les expressions lambda/Linq