Académique Documents
Professionnel Documents
Culture Documents
Sommaire
Prsentation
Nouveaux concepts
Immersion dans le Framework
Commandes avances et prcautions
Pour conclure
Xpos 2010
Prsentation
Son langage
SQL
Que doit
connaitre un
dveloppeur ?
JQL, Entity
SQL,
XML
XPath
Xpos 2010
Prsentation
Xpos 2010
Prsentation
Anciennes Approches
Collections & boucles :
List<string> parisian = new List<string>();
foreach (Customer c in GetCustomerList()) {
if (c.City == "Paris" && c.Country = "France") {
parisian.add(c.CompanyName);
}
}
Xpos 2010
Prsentation
XPath
XPathDocument doc = new XPathDocument("customers.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator it = nav.Select("/customer[@city='Paris'
and @country='France']");
foreach (XPathNavigator c in it) {
parisian.Add(c.GetAttribute("companyName", ""));
}
6
Xpos 2010
Prsentation
La solution LINQ
Xpos 2010
Prsentation
Petit historique
Plusieurs projets de recherches de Microsoft
Research
join-calculus de Cdric Fournet (INRIA
Roquencourt)
Polyphonic C# par Nick Benton, Luca Cardelli et
Cdric Fournet
Intgration au projet C (c omega ou comega
language)
19 novembre 2007 : LINQ dans le Framework 3.5
(Anders Hejlsberg)
A venir : PLINQ in parallel FX Library
Xpos 2010
Prsentation
Xpos 2010
Prsentation
LINQ
? Language-INtegrated
Query
10
Xpos 2010
Prsentation
11
Xpos 2010
Prsentation
Code || Traduction
var parisanCustomers =
from c in customers
where c.City == "Paris" && c.Country == "France"
select new { c.CompanyName };
Xpos 2010
Sommaire
Prsentation
Nouveaux concepts
Immersion dans le Framework
Commandes avances et prcautions
Pour conclure
13
Xpos 2010
Nouveaux concepts
14
Xpos 2010
Nouveaux concepts
Infrence == Magie ?
Mcanisme dauto typage
Uniquement sur les variables locales
Type : Evaluation de lAST de lexpression
var aString = "Paris"; // "Paris" est de type
15
Xpos 2010
Nouveaux concepts
Types Ad-Hoc :
new {[name1 =] expr1, ,[namen =] exprn};
lexpression
Si name omis Initialiseur dobjets
Gnial pour imiter la projection SQL non ?
16
Xpos 2010
Nouveaux concepts
Mthodes dextension
LINQ sur les tableaux cest possible
IEnumerable<string> parisian = new Customer[] {
new Customer(),
new Customer(),
new Customer(),
new Customer()
}.Where(c => c.City == "Paris" && c.Country == "France")
.Select(c => c.CompanyName);
mthodes dextension
17
Xpos 2010
Mthodes dextension :
Dclaration
Nouveaux concepts
OU
public static IEnumerable<TSource> Where<TSource>(this
IEnumerable<TSource>, Expression<Func<TSource, bool>>
expr);
Xpos 2010
Nouveaux concepts
Delegate vs Expression ?
Reprenons la requte :
var parisanCustomers =
customers
.Where(c => c.City == "Paris" && c.Country == "France")
.Select(delegate(Customer c) {
return new { c.CompanyName } ;
});
local ?
Collections Oui
Donnes distantes Inacceptable
19
Xpos 2010
Nouveaux concepts
Lambda expression
Rcuprer des langages fonctionnels
Syntaxe simple
Xpos 2010
Delegate vs Expression : la
rponse
Nouveaux concepts
Signature
Dpend du LINQ provider
A la discrtion du dveloppeur
Privilgier les performances
automatique
21
Xpos 2010
Sommaire
Prsentation
Nouveaux concepts
Immersion dans le Framework
Commandes avances et prcautions
Pour conclure
22
Xpos 2010
(SQL, XPath)
Parfait pour les expressions lambda
23
Xpos 2010
24
Xpos 2010
25
Xpos 2010
Sommaire
Prsentation
Nouveaux concepts
Immersion dans le Framework
Commandes avances et prcautions
Pour conclure
26
Xpos 2010
Commandes avances et
prcautions
27
group c by c.CompanyName;
Xpos 2010
Commandes avances et
prcautions
into var
Et bien dautre encore
28
Xpos 2010
Commandes avances et
prcautions
Count
Sum
Min/Max
Average
Avec comparateur
29
Distinct
Union
Exept
Intersect
Xpos 2010
Commandes avances et
prcautions
Problme 2 boucles
Select
Sum()
XML
30
Xpos 2010
Sommaire
Prsentation
Nouveaux concepts
Immersion dans le Framework
Commandes avances et prcautions
Pour conclure
31
Xpos 2010
Pour conclure
LINQ to
ADO.NET Data Services
Oracle, MySQL, PostgreSQL, SQLite, Ingres,
32
Xpos 2010
Pour conclure
Autres implmentation
Javascript :
jLinq
JSINQ
LINQ to JavaScript
PHPLinq
Java :
Quaere
JaQue
JaQu
Querydsl
33
Xpos 2010
Pour conclure
Rfrences
Excellent cours en anglais sur LINQ :
34
http://webcourse.cs.technion.ac.il/234319/Spring2
009/ho/WCFiles/09%20LINQ.pdf
MSDN LINQ Home page:
http://msdn.microsoft.com/enus/library/bb308961.aspx
LINQ attention bien lutiliser :
http://blog.developpez.com/index.php?blog=121&
title=linq_attention_a_bien_l_utiliser
Liste des LINQ providers :
http://en.wikipedia.org/wiki/Language_Integrated_
LINQ
par Jonathan Barbosa - Ingnieurs 2000 Query
Xpos 2010
IR 3