1 / 31

Applied Linq

Applied Linq. Putting Linq to work. Introducing…. Class-A Kennisprovider Microsoft development Training Coaching http://www.class-a.nl Alex Thissen Trainer/coach http://blog.alexthissen.nl. Agenda. About Linq and queries Query providers and APIs What it means to apply Linq

redell
Download Presentation

Applied Linq

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Applied Linq Putting Linqto work

  2. Introducing… • Class-A • Kennisprovider Microsoft development • Training • Coaching • http://www.class-a.nl • Alex Thissen • Trainer/coach • http://blog.alexthissen.nl

  3. Agenda • About Linq and queries • Query providers and APIs • What it means to apply Linq • Language and code • Query execution • Recommendations • Architecture • Beyond Linq • Demos • Questions and discussion

  4. Introducing Linq • Uniform way to write queries over data • Linq is about query keywords • Built into new languages C# 3.0 and VB 9.0 • Linq is about query operators • 40+ standard query operators are defined • Methods that operate in queries or act on its results Dim query = From c In customers _ Where c.Orders.Count > 100 _ Order By c.CompanyName Descending _ Select c var query = from c in customers where c.Orders.Count > 100 orderby c.CompanyName descending select c;

  5. About Linq queries • Expressed in terms of CLR types • Objects that might or might not exist in-memory • Linq queries are not SQL queries at all • Compositional and hierarchical by nature • Arbitrary nesting of queries • Additional operators can be applied to query • Declarative instead of imperative • Tell what you want, not how • How is up to underlying implementation

  6. Writing queries • Learn the keywords and operators • Not all operators have corresponding keywords or language integration • Number of keywords may vary per language • Some parts must be written with operators • Usually exposes lambda expressions • Queries can be done without keywords • Explicit dot notation (what compiler creates) • Sometimes FLWOS is overkill

  7. Demos Getting familiar with Linq queries • Query operations: selection, projection, grouping • Using keywords and operators

  8. Sources of data • Your data must come from somewhere • In-memory CLR objects • Database • XML • Other repositories: registry, Active Directory, … • Various flavors of Linq disclose certain type of data • Query syntax does not change per source • Set of keywords and operators available might be different

  9. Linq to XML • Power of Linq brought to data in XML format • Perform queries over XML data • New element-centric API to manipulate XML • Faster alternative to System.Xml DOM API • Functional construction of XML data with query expressions

  10. Linq to SQL • Generates object model to represent data • Mapping of CLR types to database tables • Object/Relational Mapping (OR/M) technology • 1:1 relationships between objects and tables • Translates Linq queries to SQL statements • Builds on ADO.NET and .NET Transactions • Persistence services • Automatic change tracking and identity management of objects • Updates by SQL statements or stored procedures

  11. Two kinds of Linq

  12. Query providers • Out-of-the-box providers in .NET 3.5: • Linq to Objects • Linq to SQL • Sources in query determine query providers • Affects keywords and operators you can use • Query providers can translate Linq queries to some implementation • Most providers come with Linq-enabled APIs • New object models to work with data • Linq to Objects has several: Linq to XML, DataSets

  13. Demo Linq applied Scenario: WCF services using untyped Messages WPF Application WCF Service SOAP messages Linq to XML API Linq to XML WCF proxy Linq to SQL

  14. New language features C# and VB • Linq keywords • Extension methods • Lambda expressions • Local variable inference • Object and collection initializers • Anonymous types • Automatic properties • Partial methods new new

  15. Visual Basic 9.0 • Deep XML support • Express XPath axes with XML properties • Allows XML literals to appear inside of code root.<Customer> Direct child elementscustomer.@CompanyIDAttribute selectiondoc...<description> All descendants Dim fragment As XElement = _ <company> <city>Hedel</city> </company>

  16. Visual Basic 9.0 • Gives you “expression holes” inside XML literals • Additional keywords • More freedom on order of keywords Dim query = _ From c In doc...<Customers> _ Select <customer ID=<%= c.@CustomerID %> > <%= customer.<Name> %> phone:<%= customer...<Phone>(0) %> </customer>

  17. Demo Visual Basic • WCF sample revisited • Deep XML support

  18. Deferred execution • Most Linq query providers are implemented using lazy evaluation • Composed query expressions do not execute immediately • Queries only execute when necessary • Performing an iteration over resultset • Using extension methods ToArray, ToList, ToLookup, ToDictionary • Using specific query operators, such as aggregates and set operators

  19. More on deferred execution • Before execution queries can still be changed or expanded • Adding additional sequence operators, such as Distinct, Skip, Take • Manipulating expression tree • Expression trees are immutable • Reference assignments take deep tree copies

  20. Changes to way you write code • Declarative • Far less looping constructs visible • Easier to read and to maintain • Methods returning query or its results • Remember deferred execution • Force execution of query • Hand over query for further manipulation • Query reuse

  21. Linq and architecture System.Data.Linq

  22. Architecture recommendations • Find out where and how your queries execute • Moment of execution • Local versus remote execution • Physical place/tier of query execution • Keep queries inside assemblies • Do not pass query expressions between layers • Anonymous types shouldn’t be return values • Think about important types up front • Use projections wisely

  23. Other recommendations • Learn: • to write queries with and without keywords • new language features • Use whitepapers as reference • Translation of query keywords to operators • Evaluation details of operators • Do not overuse or abuse var keyword • Decreases readability and stops you from thinking: if you know exact type, specify it • It sometimes takes more keystrokes

  24. Runtimes and frameworks for Linq providers * APIs * ADO.NET Entity Framework released out of bounds with .NET FX 3.5

  25. Beyond .NET FX 3.5 • ADO.NET Entity Framework • Microsoft’s long-term vision on data • Brings query provider Linq to Entities • Parallel Linq (PLinq) • Passes parts of query to different cores in multicore/multiproc machine • Community query providers for Linq: • Linq to Amazon, LDAP, SharePoint, NHibernate, MySql, Flickr, … and more (to come) • Linq 2.0

  26. Expanding on Linq • Linq-enable your existing API’s • Specifically for in-memory queries • Create extension methods that return an IEnumerable<T> object • Write your own query provider • Implement IQueryable<T> • Parse expression trees and translate nodes to different code or query language

  27. References • Linq home page • Future versions of • C#, Visual Basic, Visual Studio • Recommended reading • Linq to XML beta 1 docs • Future: Linq 2.0, PLinq • Downloads • Linq May 2006 CTP (for Visual Studio 2005) • Visual Studio Orcas April 2007 Beta 1 and C#, VB samples • Reflector 5.0

  28. Blogs • Microsoft Teams • C# • VB • ADO.NET • Individuals on Linq • General: Oakleaf Systems, Wes Dyer, Jomo Fisher • SQL: Mike Taulty • XML: Eric White

  29. Summary • Linq is about query keywords and operators • Linq will change way you write your code • Linq to XML might be more important than you think • Is VB a better query language than C#? • Linq is extensible

  30. Questions? ?

More Related