SlideShare une entreprise Scribd logo
LINQ Des nouveautés de C#3/VB9 à LINQ et perspectives
A propos … de votre speaker : Gregory Renard [akaRedo] ,[object Object]
 Bureau d’étude et d’aide à l’acquisition des technologies
 Microsoft RegionalDirector / MVP
 Auteur (2006 – 2007)
Livres/Livres Blancs : .NET 2.0 /3.0/3.5– C#/VB – VS2005/VS2008
Articles/Dossiers Techniques presse francophone
 Communautaire
 Blog : http://blogs.developpeur.org/redo
 Sites : Codes-Sources, ASP-PHP.NET, TechHeadBrothers, MSDN, …
 Speaker Microsoft .NET > 6 ans
 Events MSDN Belgique – Luxembourg
 Events MSDN France
TechDaysFrance, BeLux, Suisse
Wygday
 E-mail : gregory@wygwam.com,[object Object]
.NET Fx, C# 2.0 (VB 8.0)
 Nouveautés des langages
C# v3.0 (VB v9.0)
LINQ
Overview
 Perspectives,[object Object]
De 2002 à 2008 Source : http://www.danielmoth.com/Blog/2007/06/visual-studio-2008-stack.html
De 2002 à 2008
.NET Framework 3.5 SP1 ADO.NET Entity Framework ADO.NET Data  Services ASP.NET Dynamic Data WPF & WCF Enhancements .NET Framework 3.5 Framework LINQ WCFFEnhancements Additional Enhancements .NET Framework 3.0 + SP2 WPF WCF WF Windows CardSpace .NET Framework 2.0 + SP2
.NET Framework & Tools Roadmap .NET Framework 3.0 .NET Framework 3.5 .NET  Releases 3.5 SP1 Silverlight 2 .NET 4 ASP.NET MVC Visual Studio 2008 ASP.NET AJAX 1.0 Silverlight 1.0 Tools Releases VS 2008 SP1 VS Tools for SL ,[object Object]
 VS 2005 Ext. for WCF/WPF CTP VS “10” Later.. 2007 2008 2006
Qu’est-ce qui est cool dans.NET 3.5?? Linq Linq to objects Linq to xml Linq to Sql Linq to dataset LinqLinqDataSource in ASP.NET Linq support in WPF databinding Linq Linq, Linq, …
Qu’est-ce qui est cool dans .NET 3.5?? Web applications ASP.NET AJAX built in Application Services Exposed ListView control Service Applications Syndication object model WCF support for REST and JSON services WCF & WF integration Client Application Excellent tooling support! UIElement3D  Managed Add-in framework (System.AddIn) XBAP support for Firefox
Nouveautés des langages Vue d’ensemble des évolutions de C# 3.0 / VB 9.0 ,[object Object]
C# v3.0
VB v9.0,[object Object]
C# 3.0, ses objectifs de conception ! Intégration d’objets, des données relationnelles et du XML LINQ Enrichissement du langage (C# v1.0, v2.0) Basésur la .NET CLR 2.0	 Ajout de nouvellesfonctionnalités Lambda expressions Détachement du langage des APIs spécifiques 100% compatible avec les versions précédentes C# 3.0 peutêtrecomplètementtraduit en C# 2.0
C# 3.0, ses Innovations ! Query expressions var contacts =     from c in customers     where c.State == "WA"     select new { c.Name, c.Phone }; Expression trees Local variable type inference Automatic properties Lambda expressions var contacts =     customers     .Where(c => c.State == "WA")     .Select(c => new { c.Name, c.Phone }); Partial methods Extension methods Object initializers Anonymous types
VB, son Historique !
VB 9.0, ses objectifs de conception ! Intégration d’objets, des données relationnelles et du XML LINQ + Intégration XML Amelioration du langage Amélioration de la syntaxe des tâches typiques Ajout de nouvellesfonctionnalités Lambda expressions
VB 9.0, ses Innovations ! Query expressions Dim contacts = From c In customers Where c.State= "WA" Select New With { Name = c.Name, _                                  Phone = c.Phone } Expression trees Implicitly typed local variable Deep XML support Lambda expressions Dim contacts = customers _     .Where(Function(c) c.State = "WA") _     .Select(Function(c) New With { Name = c.Name, _                                                      Phone = c.Phone }) Partial methods Extension methods Anonymous types Object initializers
De C# 3.0 / VB 9.0 à LINQ … en route vers LINQ !!! ,[object Object]
Le pourquoi des nouveautés
 C# v3.0 (VB v9.0)
Des nouveautés à LINQ … 1 pas ?,[object Object]
Rappel C#2.0 / VB 8.0 Types Génériques (C#/VB) Classes partielles (C#/VB) Méthodes Anonymes (C#) Itérateurs (C#) Qualificateur global de Namespace (C#) Classes Statiques (C#) Types Nullables (C#) …
Types Generiques (C# - VB) Suppression du boxing/unboxing Suppression du Casting implicite Gestion de l’erreur lors de la compilation Meilleure lisibilité du code Meilleures performances
Classes partielles (C# - VB) Définition d’une classe  sur plusieurs fichiers Utilité dans la génération de code Exploité par les Winforms et Webforms
Méthodes anonymes (C#) Manière de passer un bloc de code comme paramètre de délégué. Réduction du codage dans l’instanciation de  délégués en éliminant la nécessité de créer une méthode séparée
Méthodes anonymes (C#) public delegate T Func<T, A> (A a) Délégué générique qui représente une fonction à un paramètre
Itérateurs (C#) Méthode, accesseur ou opérateur get permettant de prendre en charge l'itération foreach dans une classe ou une struct sans implémenter l'interface IEnumerable dans son intégralité Exécution différée Mot clé yield return

Contenu connexe

Tendances

Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
Aziz Darouichi
 
Le langage C
Le langage CLe langage C
Le langage C
Bruno Delb
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
Vincent Agnus
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
Youness Boukouchi
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
Aziz Darouichi
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
Youness Boukouchi
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
kemenaran
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Fabio Hernandez
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++
Fabio Hernandez
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en c
benouini rachid
 
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Fabio Hernandez
 
Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++
Fabio Hernandez
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++
Fabio Hernandez
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
rezgui mohamed
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
Pethrvs
 
Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++
Fabio Hernandez
 
Langage C
Langage  CLangage  C
Langage Cjwilili
 
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Fabio Hernandez
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
Ahmed MSAFRI
 

Tendances (20)

Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Le langage C
Le langage CLe langage C
Le langage C
 
C++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelistC++ Metaprogramming : multidimensional typelist
C++ Metaprogramming : multidimensional typelist
 
Programmation en C
Programmation en CProgrammation en C
Programmation en C
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++
 
Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++Partie 11: Héritage — Programmation orientée objet en C++
Partie 11: Héritage — Programmation orientée objet en C++
 
Cours de programmation en c
Cours de programmation en cCours de programmation en c
Cours de programmation en c
 
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
 
Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++Partie 9: Fonctions Membres — Programmation orientée objet en C++
Partie 9: Fonctions Membres — Programmation orientée objet en C++
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
Le langage C
Le langage CLe langage C
Le langage C
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
 
Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++
 
Langage C
Langage  CLangage  C
Langage C
 
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
Partie 7: Evolution du Modèle Objet — Programmation orientée objet en C++
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 

En vedette

Revisió palic.Marc teòric de referencia
Revisió palic.Marc teòric de referenciaRevisió palic.Marc teòric de referencia
Revisió palic.Marc teòric de referencia
Margalida Gili Alou
 
XebiConFr 15 - Comment manager des geeks
XebiConFr 15 - Comment manager des geeksXebiConFr 15 - Comment manager des geeks
XebiConFr 15 - Comment manager des geeks
Publicis Sapient Engineering
 
Comunidad de David de Ugarte
Comunidad de David de UgarteComunidad de David de Ugarte
Comunidad de David de Ugarte
augustodefranco .
 
Manejo básico netvibes
Manejo básico netvibesManejo básico netvibes
Manejo básico netvibes
luciasn
 
L'orientation après la seconde au lycée louise michel 2
L'orientation après la seconde au lycée louise michel 2L'orientation après la seconde au lycée louise michel 2
L'orientation après la seconde au lycée louise michel 2louisemichelchampigny
 
Nanec open sim
Nanec open simNanec open sim
Nanec open sim
Dolors Capdet
 
Agile france 2013 - Dette Technique
Agile france 2013 - Dette TechniqueAgile france 2013 - Dette Technique
Agile france 2013 - Dette Technique
François Wauquier
 
Axe 2 : innovation - Frecnhsouth.digital
Axe 2 :  innovation - Frecnhsouth.digitalAxe 2 :  innovation - Frecnhsouth.digital
Axe 2 : innovation - Frecnhsouth.digital
Frenchsouth.digital
 
Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Xavier Warzee
 
Dossier de Presse - Decilab
Dossier de Presse - DecilabDossier de Presse - Decilab
Dossier de Presse - DecilabCharles Mai Lam
 
02 desarrollodesoftwarecomoingenieria isi
02 desarrollodesoftwarecomoingenieria isi02 desarrollodesoftwarecomoingenieria isi
02 desarrollodesoftwarecomoingenieria isi
Christian Bueno
 
OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...
OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...
OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...
Fing
 
Petite annonce ms
Petite annonce msPetite annonce ms
Petite annonce mswarum
 
Revuepresse30.03
Revuepresse30.03Revuepresse30.03
Revuepresse30.03ramondiaz
 
2 Expo De Compo IX
2 Expo De Compo IX2 Expo De Compo IX
2 Expo De Compo IX
guestba6c50
 
Analyse de Fiches Voyages
Analyse de Fiches VoyagesAnalyse de Fiches Voyages
Analyse de Fiches Voyages
Dournaux Christophe
 

En vedette (20)

Revisió palic.Marc teòric de referencia
Revisió palic.Marc teòric de referenciaRevisió palic.Marc teòric de referencia
Revisió palic.Marc teòric de referencia
 
XebiConFr 15 - Comment manager des geeks
XebiConFr 15 - Comment manager des geeksXebiConFr 15 - Comment manager des geeks
XebiConFr 15 - Comment manager des geeks
 
Pop
PopPop
Pop
 
Comunidad de David de Ugarte
Comunidad de David de UgarteComunidad de David de Ugarte
Comunidad de David de Ugarte
 
Manejo básico netvibes
Manejo básico netvibesManejo básico netvibes
Manejo básico netvibes
 
Pop
PopPop
Pop
 
Pop
PopPop
Pop
 
L'orientation après la seconde au lycée louise michel 2
L'orientation après la seconde au lycée louise michel 2L'orientation après la seconde au lycée louise michel 2
L'orientation après la seconde au lycée louise michel 2
 
Nanec open sim
Nanec open simNanec open sim
Nanec open sim
 
Agile france 2013 - Dette Technique
Agile france 2013 - Dette TechniqueAgile france 2013 - Dette Technique
Agile france 2013 - Dette Technique
 
Axe 2 : innovation - Frecnhsouth.digital
Axe 2 :  innovation - Frecnhsouth.digitalAxe 2 :  innovation - Frecnhsouth.digital
Axe 2 : innovation - Frecnhsouth.digital
 
Poême la vie en théorèmes
Poême la vie en théorèmesPoême la vie en théorèmes
Poême la vie en théorèmes
 
Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile
 
Dossier de Presse - Decilab
Dossier de Presse - DecilabDossier de Presse - Decilab
Dossier de Presse - Decilab
 
02 desarrollodesoftwarecomoingenieria isi
02 desarrollodesoftwarecomoingenieria isi02 desarrollodesoftwarecomoingenieria isi
02 desarrollodesoftwarecomoingenieria isi
 
OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...
OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...
OPEN DATA WEEK // Plénière 2 : Fédérer les acteurs culture/ Tourisme autour d...
 
Petite annonce ms
Petite annonce msPetite annonce ms
Petite annonce ms
 
Revuepresse30.03
Revuepresse30.03Revuepresse30.03
Revuepresse30.03
 
2 Expo De Compo IX
2 Expo De Compo IX2 Expo De Compo IX
2 Expo De Compo IX
 
Analyse de Fiches Voyages
Analyse de Fiches VoyagesAnalyse de Fiches Voyages
Analyse de Fiches Voyages
 

Similaire à Vs2008 Linq

Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Gregory Renard
 
NouveautéS De Visual Basic 2010 V2
NouveautéS De Visual Basic 2010 V2NouveautéS De Visual Basic 2010 V2
NouveautéS De Visual Basic 2010 V2Gregory Renard
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
Michel Salib
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)ISIG
 
C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
Mahfoud EL HOUDAIGUI
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de donnéesISIG
 
Cours langage c
Cours langage cCours langage c
Cours langage c
coursuniv
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
SDFG5
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de donnéesISIG
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de donnéesISIG
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
James RAVAILLE
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
Microsoft
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
DNG Consulting
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScript
Habib Ayad
 
cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024
YounesOuladSayad1
 

Similaire à Vs2008 Linq (20)

Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
Visual Basic 9.0 – Visual Studio 2008 Quoi De Neuf 2.0
 
NouveautéS De Visual Basic 2010 V2
NouveautéS De Visual Basic 2010 V2NouveautéS De Visual Basic 2010 V2
NouveautéS De Visual Basic 2010 V2
 
De Java à .NET
De Java à .NETDe Java à .NET
De Java à .NET
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)
 
C# langage & syntaxe
C#   langage & syntaxeC#   langage & syntaxe
C# langage & syntaxe
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de données
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 
Dotnet csharp
Dotnet csharpDotnet csharp
Dotnet csharp
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de données
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de données
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
 
Développer en natif avec C++11
Développer en natif avec C++11Développer en natif avec C++11
Développer en natif avec C++11
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScript
 
cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024cours developpement web javascript 2023/2024
cours developpement web javascript 2023/2024
 
Roslyn
RoslynRoslyn
Roslyn
 

Plus de Gregory Renard

WygDay - Session Innovation xBrainLab
WygDay - Session Innovation xBrainLabWygDay - Session Innovation xBrainLab
WygDay - Session Innovation xBrainLabGregory Renard
 
WygDay 2010
WygDay 2010WygDay 2010
WygDay 2010
Gregory Renard
 
Approach the future of tourism by the new Technologies
Approach the future of tourism by the new TechnologiesApproach the future of tourism by the new Technologies
Approach the future of tourism by the new Technologies
Gregory Renard
 
Approach the future of cities by the singularity of technologies !
Approach the future of cities by the singularity of technologies !Approach the future of cities by the singularity of technologies !
Approach the future of cities by the singularity of technologies !
Gregory Renard
 
Wygday 2009 Session Innovation
Wygday 2009   Session InnovationWygday 2009   Session Innovation
Wygday 2009 Session InnovationGregory Renard
 
Net 2007 Faire Du E Commerce Dans Les Mv
Net 2007   Faire Du E Commerce Dans Les MvNet 2007   Faire Du E Commerce Dans Les Mv
Net 2007 Faire Du E Commerce Dans Les MvGregory Renard
 
Wygday Session PléNièRe (2)
Wygday Session PléNièRe (2)Wygday Session PléNièRe (2)
Wygday Session PléNièRe (2)Gregory Renard
 
Wygday Session PléNièRe (1)
Wygday Session PléNièRe (1)Wygday Session PléNièRe (1)
Wygday Session PléNièRe (1)Gregory Renard
 
Vs2008 Breakthrough Software Dev
Vs2008 Breakthrough Software DevVs2008 Breakthrough Software Dev
Vs2008 Breakthrough Software Dev
Gregory Renard
 
Vs2008 Ms Lux
Vs2008 Ms LuxVs2008 Ms Lux
Vs2008 Ms Lux
Gregory Renard
 
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008Gregory Renard
 
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
Gregory Renard
 
Techdays Visual Studio 2010
Techdays Visual Studio 2010Techdays Visual Studio 2010
Techdays Visual Studio 2010Gregory Renard
 
Ta Visual Studio2008 Vb9 C#3
Ta Visual Studio2008   Vb9   C#3Ta Visual Studio2008   Vb9   C#3
Ta Visual Studio2008 Vb9 C#3Gregory Renard
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .NetGregory Renard
 
Part2 CréAtion D’Un Gadget Et Boite à Outils
Part2   CréAtion D’Un Gadget Et Boite à OutilsPart2   CréAtion D’Un Gadget Et Boite à Outils
Part2 CréAtion D’Un Gadget Et Boite à OutilsGregory Renard
 

Plus de Gregory Renard (20)

WygDay - Session Innovation xBrainLab
WygDay - Session Innovation xBrainLabWygDay - Session Innovation xBrainLab
WygDay - Session Innovation xBrainLab
 
WygDay 2010
WygDay 2010WygDay 2010
WygDay 2010
 
M Forum
M ForumM Forum
M Forum
 
Approach the future of tourism by the new Technologies
Approach the future of tourism by the new TechnologiesApproach the future of tourism by the new Technologies
Approach the future of tourism by the new Technologies
 
Approach the future of cities by the singularity of technologies !
Approach the future of cities by the singularity of technologies !Approach the future of cities by the singularity of technologies !
Approach the future of cities by the singularity of technologies !
 
Wygday 2009 Session Innovation
Wygday 2009   Session InnovationWygday 2009   Session Innovation
Wygday 2009 Session Innovation
 
Net 2007 Faire Du E Commerce Dans Les Mv
Net 2007   Faire Du E Commerce Dans Les MvNet 2007   Faire Du E Commerce Dans Les Mv
Net 2007 Faire Du E Commerce Dans Les Mv
 
Wygday Session PléNièRe (2)
Wygday Session PléNièRe (2)Wygday Session PléNièRe (2)
Wygday Session PléNièRe (2)
 
Wygday Session PléNièRe (1)
Wygday Session PléNièRe (1)Wygday Session PléNièRe (1)
Wygday Session PléNièRe (1)
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
Web Services
Web ServicesWeb Services
Web Services
 
Vs2008 Breakthrough Software Dev
Vs2008 Breakthrough Software DevVs2008 Breakthrough Software Dev
Vs2008 Breakthrough Software Dev
 
Vs2008 Ms Lux
Vs2008 Ms LuxVs2008 Ms Lux
Vs2008 Ms Lux
 
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
 
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008Visual Basic 9.0   Trucs Et Astuces Dans Visual Studio 2008
Visual Basic 9.0 Trucs Et Astuces Dans Visual Studio 2008
 
Techdays Visual Studio 2010
Techdays Visual Studio 2010Techdays Visual Studio 2010
Techdays Visual Studio 2010
 
Ta Visual Studio2008 Vb9 C#3
Ta Visual Studio2008   Vb9   C#3Ta Visual Studio2008   Vb9   C#3
Ta Visual Studio2008 Vb9 C#3
 
Starter Kits
Starter KitsStarter Kits
Starter Kits
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .Net
 
Part2 CréAtion D’Un Gadget Et Boite à Outils
Part2   CréAtion D’Un Gadget Et Boite à OutilsPart2   CréAtion D’Un Gadget Et Boite à Outils
Part2 CréAtion D’Un Gadget Et Boite à Outils
 

Dernier

De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 

Dernier (7)

De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 

Vs2008 Linq

  • 1. LINQ Des nouveautés de C#3/VB9 à LINQ et perspectives
  • 2.
  • 3. Bureau d’étude et d’aide à l’acquisition des technologies
  • 5. Auteur (2006 – 2007)
  • 6. Livres/Livres Blancs : .NET 2.0 /3.0/3.5– C#/VB – VS2005/VS2008
  • 9. Blog : http://blogs.developpeur.org/redo
  • 10. Sites : Codes-Sources, ASP-PHP.NET, TechHeadBrothers, MSDN, …
  • 11. Speaker Microsoft .NET > 6 ans
  • 12. Events MSDN Belgique – Luxembourg
  • 13. Events MSDN France
  • 16.
  • 17. .NET Fx, C# 2.0 (VB 8.0)
  • 19. C# v3.0 (VB v9.0)
  • 20. LINQ
  • 22.
  • 23. De 2002 à 2008 Source : http://www.danielmoth.com/Blog/2007/06/visual-studio-2008-stack.html
  • 24. De 2002 à 2008
  • 25. .NET Framework 3.5 SP1 ADO.NET Entity Framework ADO.NET Data Services ASP.NET Dynamic Data WPF & WCF Enhancements .NET Framework 3.5 Framework LINQ WCFFEnhancements Additional Enhancements .NET Framework 3.0 + SP2 WPF WCF WF Windows CardSpace .NET Framework 2.0 + SP2
  • 26.
  • 27. VS 2005 Ext. for WCF/WPF CTP VS “10” Later.. 2007 2008 2006
  • 28. Qu’est-ce qui est cool dans.NET 3.5?? Linq Linq to objects Linq to xml Linq to Sql Linq to dataset LinqLinqDataSource in ASP.NET Linq support in WPF databinding Linq Linq, Linq, …
  • 29. Qu’est-ce qui est cool dans .NET 3.5?? Web applications ASP.NET AJAX built in Application Services Exposed ListView control Service Applications Syndication object model WCF support for REST and JSON services WCF & WF integration Client Application Excellent tooling support! UIElement3D Managed Add-in framework (System.AddIn) XBAP support for Firefox
  • 30.
  • 32.
  • 33. C# 3.0, ses objectifs de conception ! Intégration d’objets, des données relationnelles et du XML LINQ Enrichissement du langage (C# v1.0, v2.0) Basésur la .NET CLR 2.0 Ajout de nouvellesfonctionnalités Lambda expressions Détachement du langage des APIs spécifiques 100% compatible avec les versions précédentes C# 3.0 peutêtrecomplètementtraduit en C# 2.0
  • 34. C# 3.0, ses Innovations ! Query expressions var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; Expression trees Local variable type inference Automatic properties Lambda expressions var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Partial methods Extension methods Object initializers Anonymous types
  • 36. VB 9.0, ses objectifs de conception ! Intégration d’objets, des données relationnelles et du XML LINQ + Intégration XML Amelioration du langage Amélioration de la syntaxe des tâches typiques Ajout de nouvellesfonctionnalités Lambda expressions
  • 37. VB 9.0, ses Innovations ! Query expressions Dim contacts = From c In customers Where c.State= "WA" Select New With { Name = c.Name, _ Phone = c.Phone } Expression trees Implicitly typed local variable Deep XML support Lambda expressions Dim contacts = customers _ .Where(Function(c) c.State = "WA") _ .Select(Function(c) New With { Name = c.Name, _ Phone = c.Phone }) Partial methods Extension methods Anonymous types Object initializers
  • 38.
  • 39. Le pourquoi des nouveautés
  • 40. C# v3.0 (VB v9.0)
  • 41.
  • 42. Rappel C#2.0 / VB 8.0 Types Génériques (C#/VB) Classes partielles (C#/VB) Méthodes Anonymes (C#) Itérateurs (C#) Qualificateur global de Namespace (C#) Classes Statiques (C#) Types Nullables (C#) …
  • 43. Types Generiques (C# - VB) Suppression du boxing/unboxing Suppression du Casting implicite Gestion de l’erreur lors de la compilation Meilleure lisibilité du code Meilleures performances
  • 44. Classes partielles (C# - VB) Définition d’une classe sur plusieurs fichiers Utilité dans la génération de code Exploité par les Winforms et Webforms
  • 45. Méthodes anonymes (C#) Manière de passer un bloc de code comme paramètre de délégué. Réduction du codage dans l’instanciation de délégués en éliminant la nécessité de créer une méthode séparée
  • 46. Méthodes anonymes (C#) public delegate T Func<T, A> (A a) Délégué générique qui représente une fonction à un paramètre
  • 47. Itérateurs (C#) Méthode, accesseur ou opérateur get permettant de prendre en charge l'itération foreach dans une classe ou une struct sans implémenter l'interface IEnumerable dans son intégralité Exécution différée Mot clé yield return
  • 48. Qualificateur global de Namespace (C#) « :: » Résout le membre être caché par une autre entité du même nom.
  • 49. Classes Statiques (C#) Accès sans création d’instances Chargé automatiquement par le CLR
  • 50. Types Nullables (C#) Permet d’avoir des types valeurs nullables Pratique pour les données nullables provenant de bases de données
  • 51. Nouveautés : C# v3.0 / VB 9.0 ? http://msdn2.microsoft.com/en-us/library/bb383815(VS.90).aspx
  • 52. Types implicites / Inférence de types « Var » Déclaration de variable ou Array sans spécifier de type Déclaration fortement typée Doit être directement initialisée Variables locales uniquement
  • 53. Initialisation d’objets simplifiée Déclaration avec unesyntaxesimplifiée. Initialisationd’objettypé Person p = new Person {Name = "Chris Smith", Age = 31}; Initialisationd’objet avec type anonyme varproductInfos = from p in products select new {p.ProductName, p.UnitPrice}; foreach(var p in productInfos){...} Initialisation d’objet avec un type nullable : compile time error !
  • 54. … Initialisation de collections simplifiée Uniquement pour les collection de classes implementant “IEnumerable” List<int> digits = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List<Test> list = new List<Test> { new Test{ num = 1, s = "Hello"}, new Test{ num = 2, s = "World"}, new Test{ num = 3, s = "From C#"} };
  • 55. … Propriétés automatiques Déclaration avec unesyntaxesimplifiée. Attributs non permis (utiliseralors la méthoderégulière)
  • 56. Types anonymes Types automatiquement générés à la compilationvar v = new { Amount = 108, Message = "Hello" }; Non disponible dans le code source Intellisence disponible Typiquementutilisédans la clause select des query expression Repose surl’initialisationd’objet et collections var query = fromprod in Products select new { prod.Color, prod.Price}; foreach(var v in query) { Console.WriteLine("Color={0}, Price={1}", v.Color, v.Price); }
  • 57. Méthodes d’extension Ajout “Virtuel” d’une méthode à un type Méthode Static : premier paramètre “this” Étend, ne modifie pas le type, override Définition du scope par “using namespaces”
  • 58. Expressions Lambda Ecriture inline de méthodes Lambda opérateur « => » Simplifications d'écriture des entêtes d'une méthode anonyme delegateint D1(int i); D1 myDelegate1 = x => x + 1; int j = myDelegate1(5); //j = 6 Permet d’écrire une fonction dans une expression et de récupérer un pointeur vers la fonction Possibilité de récupérer un arbre d’expression
  • 59. Expressions Lambda Exemplesd’expressions lambda x => x + 1 // Implicitly typed, expression body x => { return x + 1; } // Implicitly typed, statement body (int x) => x + 1 // Explicitly typed, expression body (int x) => { return x + 1; } // Explicitly typed, statement body (x, y) => x * y // Multiple parameters () => Console.WriteLine() // No parameters
  • 60. Expressions Lambda Inférence de type dans une Lambda customers.Where(c => c.City == "London"); Opérateurs de vérification Func<int, bool> myFunc = x => x == 5; bool result = myFunc(4); // returns false of course int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; intoddNumbers = numbers.Count(n => n % 2 == 1); Ne pas confondre avec l’opérateur “>=“ varfirstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
  • 61. Arbres d’expression usingSystem.Linq.Expressions;Expression<Func<int, bool>> exprTree = num => num < 5; Les expressions lambda peuvent être traduite Code IL Arbre d’expressions Peuvent être parsés au Runtime Utilisés au sein des LinqQuery Provider (Linq to SQL) Func<int,int> square = i => i * i;int four = square(2);Expression<Func<int,int>> squareEx = i => i * i; λ * i i i
  • 62. Expressions Une expression représente l’arbre d’objets qui représente l’expression passée en argument
  • 63. Méthodes Partielles Les types partiels peuvent maintenant contenir des méthodes partielles partial class Customer { partial void OnCreated() {Console.WriteLine(“Welcome new customer”); } }
  • 65. Types nullables Valid for all value types Dim a As Integer?‘Will be Nothing a = 123 a = Nothing‘Boolean HasValue property Dim hasValue = a.HasValue‘Get the value via Value property or directly Dim value1 As Integer = a.Value Dim value2 As Integer = a Will throw exception if equal to Nothing
  • 66. Types implicites « Dim » Déclaration de variable ou Array sans spécifier de type Déclaration fortement typée Doit être directement initialisée Variables locales uniquement
  • 67. Initialisation d’objets Déclaration avec unesyntaxesimplifiée Mot clé “With” Initialisationd’objettypé Dim namedCust = New Customer With {.Name = “xxx"} Initialisationd’objet avec type anonyme Dim anonymousCust = New With {.Name = “xxx"} Initialisation d’objet avec un type nullable : compile time error !
  • 68. Types anonymes Types automatiquement générés à la compilation Dim product1 = New With {.Name = "paperclips", .Price = 1.29} Non disponible dans le code source Intellisence disponible Typiquementutilisédans la clause select des query expression Repose surl’initialisationd’objet
  • 69. Types anonymes : Key Properties Comparaison de deux types anonymes (Key) Que les « Key » sont comparées Les valeurs des « Key » sont : Read-Only Ne peuvent être changées Seule la valeur d'une propriété « Key » est incluse dans l'algorithme compilateur produisant le code du type anonyme.
  • 70. RelaxedDelegates Vraie relaxation : les paramètres ne sont pas employés, vous pouvez ne pas les utiliser. Dim WithEventsbtn As New Button() SubBOnClick(ByValsender As Object, ByVal e As EventArgs) Handlesbtn.Click MessageBox.Show("Hello World from" & btn.Text) End Sub SubRelaxedOnClick() Handlesbtn.Click MessageBox.Show("Hello World from" & btn.Text) End Sub
  • 71. Méthodes d’extension Ajout “Virtuel” d’une méthode à un type Extension attribute <Extension()> de l’espace de nom System.Runtime.CompilerServices Étend, ne modifie pas le type, override Définition du scope par “imports namespaces”
  • 72. Expressions Lambda Ecriture inline de méthodes Dim fnums = numbers.Where(Function(n) n < 5) Lambda opérateur « Function » Simplifications d'écriture des entêtes d'une méthode anonyme Permet d’écrire une fonction dans une expression et de récupérer un pointeur vers la fonction Possibilité de récupérer un arbre d’expression
  • 73. Meilleur support XML Modèle hiérarchique de programmation simplifié Imports <xmlns:ns=“http://myNamespace/schema”>Dim books = <books> <book Title=“Welcome to VB 9.0”> <author Name=“Bart”> <origin>Belgium</origin> </author> </book> </books>For Each book in books.<book> Console.WriteLine(book.@Title); Console.WriteLine(book.<author>.@Name); Console.WriteLine(book...<origin>); Next Inline XML Child axis .< (for iteration) Attribute axis (.@) Descendant axis …search in all descendants
  • 74. Meilleur support xml LINQ query DimcountriesWithCapital = _<Countries><%=From country In Countries, city In Capitals _ Wherecountry.Name = city.Country _Select _<CountryName=<%=country.Name%>Density=<%=country.Population / country.Area%>><Capital><Name><%=city.Name%></Name><Longitude><%=city.Longitude%></Longitude><Latitude><%=city.Latitude%></Latitude></Capital></Country> _%></Countries> ASP-alike embedded expressions
  • 75. Autres amélioration VB v 9.0 Friend assemblies InternalsVisibleTo attribute recognized Runtime agility Compile without Microsoft.VisualBasic.dll Need originates from CF and Silverlight New /vbruntime switch Improved generic type inferencing Calling Object members on interfaces
  • 76. Et là … « LINQ » ! Des nouveauté s à LINQ (.NET Language-IntegratedQuery) : un pas ? http://msdn2.microsoft.com/fr-fr/netframework/aa904594.aspx
  • 77. LINQ : Définition Linq = LanguageINtegratedQuery Exemples DLinq = Database + Linq Appelé maintenant Linq to Data Xlinq = XML + Linq Appelé maintenant Linq to XML
  • 78. LINQ : Concepts Linq = innovation de VS2008 et .NET 3.5 Change radicalement le travail de données Avantages Simplifie l’écriture des requêtes Unifie la syntaxe de requêtes pour tout type de source de données Renforce la connection entre les données relationnelles et le monde de l’OO Accélère les développements Gestion des erreurs à la compilation Intellisense et debugging
  • 79. LINQ : Fondations C# v3.0 – VB v9.0 Query expressions var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; Expression trees Local variable type inference Automatic properties Lambda expressions var contacts = customers .Where(c => c.State == "WA") .Select(c => new { c.Name, c.Phone }); Partial methods Extension methods Object initializers Anonymous types
  • 80. LINQ : Architecture Others… VB C# .NET Language Integrated Query (LINQ) Sources de données LINQ Linqsur des sources ADO.NET LINQ To XML LINQ To Entities LINQ To SQL LINQ To Datasets LINQ To Objects Provider <book> <title/> <author/> <price/> </book> XML Relationnel Objets
  • 81. Une syntaxe unique pour plusieurs sources de données
  • 82. LINQ : 3 parties de toute requête Touterequête LINQ consiste en 3 actions essentielles : Obtention de la source de données(xml, db, Objects) Création de la requête Exécution de la requête
  • 83. LINQ : Framework L’architecture à la base de Linq est constituée de deux parties LINQ Language Extensions Un langage de programmation implémentant les extensions de langage LINQ C# et VB implémentés au sein de VS2008 LINQ Providers Provider LINQ implémentant les Standard QueryOperator méthodes pour chaque source de données spéficique.
  • 84. LINQ : Requête de base IEnumerable<Customer> customerQuery = from cust in customers //... Exemple : List<int> numberList = new List<int> { 1, 2, 3, 4 };var query = from i in numberList where i < 4 select i;
  • 85. Query Expressions    var locals = from c in customers Wherec.ZipCode==91822 select (new {FullName=c.FirstName + “ “ + c.LastName, HomeAdresse=c.Address});  var locals = customers .Where(c => c.ZipCode == 91822) .Select(c => new { FullName = c.FirstName + “ “ + c.LastName, HomeAddress = c.Address });
  • 86. Linq or not : Différence ? C#2 List<City> returnCities = new List<City>(); Foreach (city c in cities) { If (c.Name==« London ») returnCities.Add(c); } C#3 var query= from c in cities Where c. Name==« London » Select c;
  • 87. Exprimer la sémantique d’une requête et non son implémentation
  • 88. LINQ : Projections - SELECT Utilisation du Keyword “Select” Nécessité de modifier, transformer les donnéesretournées par unerequête LINQ LINQ permet des scénariosavancés de mise en forme de données = “Projections” Exploitation des type anonymesproposés par le compilateur
  • 89. LINQ : Projections + Types Anonymes List<City> cities = CityUtilityHelper.GetCities(); var places = from city in cities where city.DistanceFromSeattle > 1000 select new { City = city.Name, Country = city.Country, DistanceInKm = city.DistanceFromSeattle * 1.61 }; GridView1.DataSource = places; GridView1.DataBind(); Type anonymeutilisé pour forger un type de retour personnalisé ! Application d’une conversion Miles/Kms
  • 90. LINQ : Query Operators C# 3.0 VB 9.0 from .. in .. where .. select .. [into ..] group .. by .. [into ..] orderby .. [descending] join .. in .. on .. equals .. let .. = .. From .. [As ..] In .. Where .. Select .. [,..]* Group .. By .. Into .. Group Join .. [As ..] In .. On ..Equals .. [...] Into .. Order By ... [Descending] Join .. In .. On ..Equals .. [...] Let .. = ... Others: Skip, Skip While, Take, Take While Aggregates: All, Any, Average, [Long]Count, Max, Min, Sum Les opérateurs sont implémentés via des méthodes d’extensions
  • 92.
  • 93. Des nouveautés à LINQ : un pas ?
  • 94. LINQ : .NET Language-IntegratedQuery… Vos Questions ?

Notes de l'éditeur

  1. • VB9• C#3• IDE enhancements for .NET Fx 3.0• .NET Fx 3.5• Impact of Windows Server 2008 for developers
  2. The main points are that the CLR engine is the same version (so no need to retest your apps) and that the headline feature is the language enhancements (C#3 & VB9 compilers) and LINQ.
  3. The main points are that the CLR engine is the same version (so no need to retest your apps) and that the headline feature is the language enhancements (C#3 & VB9 compilers) and LINQ.
  4. Time: 4 minDiscussion Points:How do the new 3.5 SP1 technologies relate to previous versions of the framework?First, let’s talk about how these new SP1 enhancements relate to the 3.5, 3.0, and 2.0 versions of the framework.The .NET Framework 3.5 SP1 will add these technologies on top of the framework 3.5 that just shipped in November.In addition, the current plan of record is that there will be updated service packs for both the 3.0 assemblies and the 2.0 framework and CLRSo to be clear, the .NET Framework 3.5 SP1 will depend on the .NET Framework 3.5, 3.0 with SP2, and 2.0 with SP2 to be installed on a users machine.
  5. C# - started as “the (first) language for CLR”; emphasize the pragmatic approach (cf. Anders Hejlsberg) = be explicit about language features like properties, events, etc.  developer confidence2.0 = generics wave (impact on CLR) + additional useful things (that do require generics on their own + that are useful on their own)3.0 = LINQ + making the language more concise, more productive, more powerful, ...
  6. LINQ: tell the story of Reflex 2.0, Dbase III+, ... where data and code were close together  structured + distributed programming changed this = layered approach  result: data and code on two islands with a huge gap between the two  need for O/R mapping tools etcWith LINQ: data becomes a first-class citizen of the languageReduce “language noise” (e.g. tiresome repetitive code etc)API independent  you can reimplement stuff on your own, the language doesn’t care about it (e.g. extension methods on Ienumerable<T>, don’t mention the word yet)Backward compat: refer to MSR paper on formal proof of the possibility for translation of every C# 3.0 program to an equivalent C# 2.0 program (semantically)
  7. Build up the slide and introduce “syntactical sugar”. Story telling approach referring back to the gap between data and code and the LINQ solution using Language Integrated queries  requires glue: functional style programming concepts, introduction of concepts from the relational world (e.g. projection clauses require anonymous types) and language simplification (e.g. object initializers).Use the words:-Different compilation stages (front-end query syntax is translated into “pure” C# into ..., e.g. resolution of query expressions to chains of method calls)-Method call chain (can still be instance methods or extension methods)
  8. VB = longer history (up to 9.0)Refer to huge transition from 6.0 to .NET which implied the creation of a runtime library for bw compat: play the rules of the CLS (OO for example) and remain consistent with VB pre-.NETVB 8.0 = GenericsVB 9.0 = LINQ + XML (difference with C#)
  9. Similar story as in C# 3.0 except for XML integration; emphasize that language evolutuon doesn’t mean that languages have to go hand in hand on any field.
  10. Similar story as with C# 3.0 but abbrev’d.
  11. http://msdn2.microsoft.com/fr-fr/library/7cz8t42e(VS.80).aspx
  12. Réf : http://www.dotnetguru.org/articles/dossiers/generics/CS2_Generics_FR2.htm
  13. Réf : http://www.dotnetguru.org/articles/dossiers/anonymescsharp2/CS2_AnonymousMethod_FR.htmThe delegate keyword is used to declare a reference type that can be used to encapsulate a named or an anonymous method. Delegates are similar to function pointers in C++; however, delegates are type-safe and secure. For applications of delegates, see Delegates and Generic Delegates.
  14. http://msdn2.microsoft.com/en-us/library/sx2bwtw7(VS.80).aspx
  15. Traitement continuPossibilité de gérer des listes infinies comme dans les langages fonctionnels
  16. http://msdn2.microsoft.com/fr-fr/library/79b3xss3(VS.80).aspx
  17. http://msdn2.microsoft.com/en-us/library/bb383815(VS.90).aspx
  18. When used with local variables, the var keyword instructs the compiler to infer the type of the variable or the array elements from the expression on the right side of the initialization statement.Indispensable pour les types anonymeshttp://msdn2.microsoft.com/fr-fr/library/bb384061(VS.90).aspx
  19. http://msdn2.microsoft.com/fr-fr/library/bb384062(VS.90).aspx
  20. Collection initializers provide a way to specify one or more object intializers when initializing any collection class that implements IEnumerable. By using a collection initializer you do not have to specify multiple calls to the Add method of the class in your source code; the compiler adds the calls2ème exemple :The following collection initializer uses object initializers to initialize objects of the Test class defined in an earlier example. Note that the individual object initializers are enclosed in braces and separated by commas.