linq & les expressions lambda. l language in integrated q query

Post on 04-Apr-2015

107 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

top related