Your SlideShare is downloading. ×
0
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Vs2008 Linq
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Vs2008 Linq

1,188

Published on

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
  • 34
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,188
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
1
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • • VB9• C#3• IDE enhancements for .NET Fx 3.0• .NET Fx 3.5• Impact of Windows Server 2008 for developers
  • 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.
  • 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.
  • 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.
  • 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, ...
  • 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)
  • 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)
  • 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#)
  • 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.
  • Similar story as with C# 3.0 but abbrev’d.
  • http://msdn2.microsoft.com/fr-fr/library/7cz8t42e(VS.80).aspx
  • Réf : http://www.dotnetguru.org/articles/dossiers/generics/CS2_Generics_FR2.htm
  • 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.
  • http://msdn2.microsoft.com/en-us/library/sx2bwtw7(VS.80).aspx
  • Traitement continuPossibilité de gérer des listes infinies comme dans les langages fonctionnels
  • http://msdn2.microsoft.com/fr-fr/library/79b3xss3(VS.80).aspx
  • http://msdn2.microsoft.com/en-us/library/bb383815(VS.90).aspx
  • 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
  • http://msdn2.microsoft.com/fr-fr/library/bb384062(VS.90).aspx
  • 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.
  • Transcript

    • 1. LINQ
      Des nouveautés de C#3/VB9 à LINQ et perspectives
    • 2. A propos
      … de votre speaker : Gregory Renard [akaRedo]
      • CTO Wygwam, www.wygwam.com
      • 3. Bureau d’étude et d’aide à l’acquisition des technologies
      • 4. Microsoft RegionalDirector / MVP
      • 5. Auteur (2006 – 2007)
      • 6. Livres/Livres Blancs : .NET 2.0 /3.0/3.5– C#/VB – VS2005/VS2008
      • 7. Articles/Dossiers Techniques presse francophone
      • 8. Communautaire
      • 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
      • 14. TechDaysFrance, BeLux, Suisse
      • 15. Wygday
      • 16. E-mail : gregory@wygwam.com
    • Roadmap
      Des nouveautés de C#3/VB9 à LINQ et perspectives
    • Rappel
      Vue d’ensemble des évolutions du .NETFx, des langages et de son IDE
    • 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
      WCFWFEnhancements
      Additional Enhancements
      .NET Framework 3.0 + SP2
      WPF
      WCF
      WF
      Windows CardSpace
      .NET Framework 2.0 + SP2
    • 26. .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
      • VS 2005 Ext. for WF
      • 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. Nouveautés des langages
      Vue d’ensemble des évolutions de C# 3.0 / VB 9.0
      • Vue d’ensemble des nouveautés
      • 31. C# v3.0
      • 32. VB v9.0
    • C#, son Historique !
    • 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 == &quot;WA&quot;
      select new { c.Name, c.Phone };
      Expression trees
      Local variable type inference
      Automatic properties
      Lambda expressions
      var contacts =
      customers
      .Where(c =&gt; c.State == &quot;WA&quot;)
      .Select(c =&gt; new { c.Name, c.Phone });
      Partial methods
      Extension methods
      Object initializers
      Anonymous types
    • 35. VB, son Historique !
    • 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= &quot;WA&quot;
      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 = &quot;WA&quot;) _
      .Select(Function(c) New With { Name = c.Name, _ Phone = c.Phone })
      Partial methods
      Extension methods
      Anonymous types
      Object initializers
    • 38. De C# 3.0 / VB 9.0 à LINQ
      … en route vers LINQ !!!
      • Rappel C# v2.0 (VB v8.0)
      • 39. Le pourquoi des nouveautés
      • 40. C# v3.0 (VB v9.0)
      • 41. Des nouveautés à LINQ … 1 pas ?
    • Rappel C# v2.0 – VB v8.0
      http://msdn2.microsoft.com/en-us/library/7cz8t42e(VS.80).aspx
    • 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&lt;T, A&gt; (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&apos;itération foreach dans une classe ou une struct sans implémenter l&apos;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 = &quot;Chris Smith&quot;, 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&lt;int&gt; digits = new List&lt;int&gt; { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
      List&lt;Test&gt; list = new List&lt;Test&gt;
      {
      new Test{ num = 1, s = &quot;Hello&quot;},
      new Test{ num = 2, s = &quot;World&quot;},
      new Test{ num = 3, s = &quot;From C#&quot;}
      };
    • 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 = &quot;Hello&quot; };
      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(&quot;Color={0}, Price={1}&quot;, 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 « =&gt; »
      Simplifications d&apos;écriture des entêtes d&apos;une méthode anonyme
      delegateint D1(int i); D1 myDelegate1 = x =&gt; 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 =&gt; x + 1 // Implicitly typed, expression body
      x =&gt; { return x + 1; } // Implicitly typed, statement body
      (int x) =&gt; x + 1 // Explicitly typed, expression body
      (int x) =&gt; { return x + 1; } // Explicitly typed, statement body
      (x, y) =&gt; x * y // Multiple parameters
      () =&gt; Console.WriteLine() // No parameters
    • 60. Expressions Lambda
      Inférence de type dans une Lambda
      customers.Where(c =&gt; c.City == &quot;London&quot;);
      Opérateurs de vérification
      Func&lt;int, bool&gt; myFunc = x =&gt; 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 =&gt; n % 2 == 1);
      Ne pas confondre avec l’opérateur “&gt;=“
      varfirstSmallNumbers = numbers.TakeWhile((n, index) =&gt; n &gt;= index);
    • 61. Arbres d’expression
      usingSystem.Linq.Expressions;Expression&lt;Func&lt;int, bool&gt;&gt; exprTree = num =&gt; num &lt; 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&lt;int,int&gt; square = i =&gt; i * i;int four = square(2);Expression&lt;Func&lt;int,int&gt;&gt; squareEx = i =&gt; 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”); } }
    • 64. VB v9.0
      http://msdn2.microsoft.com/en-us/library/y17w47af(VS.90).aspx
    • 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&quot;}
      Initialisationd’objet avec type anonyme
      Dim anonymousCust = New With {.Name = “xxx&quot;}
      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 = &quot;paperclips&quot;, .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&apos;une propriété « Key » est incluse dans l&apos;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(&quot;Hello World from&quot; & btn.Text)
      End Sub
      SubRelaxedOnClick() Handlesbtn.Click
      MessageBox.Show(&quot;Hello World from&quot; & btn.Text)
      End Sub
    • 71. Méthodes d’extension
      Ajout “Virtuel” d’une méthode à un type
      Extension attribute &lt;Extension()&gt; 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 &lt; 5)
      Lambda opérateur « Function »
      Simplifications d&apos;écriture des entêtes d&apos;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 &lt;xmlns:ns=“http://myNamespace/schema”&gt;Dim books = &lt;books&gt; &lt;book Title=“Welcome to VB 9.0”&gt; &lt;author Name=“Bart”&gt; &lt;origin&gt;Belgium&lt;/origin&gt; &lt;/author&gt; &lt;/book&gt; &lt;/books&gt;For Each book in books.&lt;book&gt;
      Console.WriteLine(book.@Title); Console.WriteLine(book.&lt;author&gt;.@Name); Console.WriteLine(book...&lt;origin&gt;);
      Next
      Inline XML
      Child axis .&lt; (for iteration)
      Attribute axis (.@)
      Descendant axis …search in all descendants
    • 74. Meilleur support xml
      LINQ query
      DimcountriesWithCapital = _&lt;Countries&gt;&lt;%=From country In Countries, city In Capitals _ Wherecountry.Name = city.Country _Select _&lt;CountryName=&lt;%=country.Name%&gt;Density=&lt;%=country.Population / country.Area%&gt;&gt;&lt;Capital&gt;&lt;Name&gt;&lt;%=city.Name%&gt;&lt;/Name&gt;&lt;Longitude&gt;&lt;%=city.Longitude%&gt;&lt;/Longitude&gt;&lt;Latitude&gt;&lt;%=city.Latitude%&gt;&lt;/Latitude&gt;&lt;/Capital&gt;&lt;/Country&gt; _%&gt;&lt;/Countries&gt;
      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 == &quot;WA&quot;
      select new { c.Name, c.Phone };
      Expression trees
      Local variable type inference
      Automatic properties
      Lambda expressions
      var contacts =
      customers
      .Where(c =&gt; c.State == &quot;WA&quot;)
      .Select(c =&gt; 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
      &lt;book&gt;
      &lt;title/&gt;
      &lt;author/&gt;
      &lt;price/&gt;
      &lt;/book&gt;
      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&lt;Customer&gt; customerQuery = from cust in customers //...
      Exemple :
      List&lt;int&gt; numberList = new List&lt;int&gt; { 1, 2, 3, 4 };var query = from i in numberList
      where i &lt; 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 =&gt; c.ZipCode == 91822) .Select(c =&gt; new { FullName = c.FirstName + “ “ + c.LastName, HomeAddress = c.Address });
    • 86. Linq or not : Différence ?
      C#2
      List&lt;City&gt; returnCities = new List&lt;City&gt;();
      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&lt;City&gt; cities = CityUtilityHelper.GetCities();
      var places = from city in cities
      where city.DistanceFromSeattle &gt; 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
    • 91. Vos questions …
    • 92. Conclusions
      Vue d’ensemble des évolutions du .NETFx et de son IDE
      • Nouveautés de C# v3.0 / VB 9.0
      • 93. Des nouveautés à LINQ : un pas ?
      • 94. LINQ : .NET Language-IntegratedQuery
      … Vos Questions ?

    ×