1 / 17

LINQ Providers

LINQ Providers. Or why .NET rules, and Java doesn’t. Branimir Giurov. SofiaDev.org UG Lead, C# MVP Freelance Software Developer. www. sofiadev.org. Contents. typeof ( linq ) How does it work? Lambda, extension methods, iterators. typeof ( linq ). <book> <title/> <author/>

haven
Download Presentation

LINQ Providers

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. LINQ Providers Or why .NET rules, and Java doesn’t Branimir Giurov SofiaDev.org UG Lead, C# MVP Freelance Software Developer www.sofiadev.org

  2. Contents • typeof(linq) • How does it work? • Lambda, extension methods, iterators

  3. typeof(linq)

  4. <book> <title/> <author/> <year/> <price/> </book> Relational Objects XML C# 3.0 VB 9.0 Others… .NET Language Integrated Query LINQ toObjects LINQ toDatasets LINQ toSQL LINQ toEntities LINQ toXML

  5. typeof(linq) • LINQ to Objects • LINQ to SQL • LINQ to XML • LINQ to Datasets • LINQ to Entities • LINQ to Windows Search • LINQ to Google • LINQ to Sharepoint • LINQ to nHibernate

  6. LINQ to Objects • Query language over collections of objects • Standard SQL-like set of query operators, including joins and grouping • New query operators can be added, fully extensible (extension methods) • Intellisense and compiler syntax checking support in Visual Studio

  7. LINQ to Objects • How to query an array of int? public void Linq1() {int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };varlowNums =        from n in numbers        where n < 5        select n;Console.WriteLine("Numbers < 5:");foreach (var x in lowNums) {Console.WriteLine(x);    }}

  8. LINQ to SQL • Write queries in any .NET language to retrieve and manipulate data from SQL • Use FK constraints for defining relations of data without joins • Join in code on any column that has no FK defined • Use FK’s to query/modify data in SQL DB • Call SubmitChanges() when you’re done • Currently supports SQL 2000 & 2005 • System.Date.Linq.SqlClient.Sql2000Provider • System.Date.Linq.SqlClient.Sql2005Provider

  9. DEMO LINQ to SQL ToString() Modifying Queries Mapping Styles Mapping Tools

  10. LINQ to XML • LINQ to XML is a new way to construct, write and read XML data in the .NET language of the developers’ choice • Simplifies working with XML • No more XPath or XSLT • Not a replacement for DOM or any of the current XML libs • Supports writing Query Expressions • Can be combined with any of the other LINQ technologies • Supports SAX-style reading/writing of documents with the use of XStreamingElement • Differed execution

  11. LINQ to XML • Combining it with other LINQ technologies makes life easier XElement xml = newXElement("contacts", newXElement("contact", newXAttribute("contactId", "2"), newXElement("firstName", "Barry"), newXElement("lastName", "Gottshall") ), newXElement("contact", newXAttribute("contactId", "3"), newXElement("firstName", "Armando"), newXElement("lastName", "Valdes") ) );

  12. LINQ to XML • Result from previous example: <contacts> <contact contactId="2"> <firstName>Barry</firstName> <lastName>Gottshall</lastName> </contact> <contact contactId="3"> <firstName>Armando</firstName> <lastName>Valdes</lastName> </contact> </contacts>

  13. LINQ to DataSet(s) • Allows developers to query existing DataSet sources within applications • Offline, still uses IQueryable<T> approach • 2 types of queries, depending on use of typed/un-typed datasets • Use LINQ in current applications without re-writing using LINQ to SQL • Bi-directional: LINQ Sequence -> DataTable -> LINQ Sequence support

  14. How Does it Work? • Depends on if the type is {0} or not • IQueryable<T> • System.Linq.Queryable (System.Data.Linq.DataQuery<T>) • SQL • Entity • Datasets • The extension methods build an expression tree • If not, then check if it is a IEnumerable<T> • System.Linq.IEnumerable<T> • Objects • XML • The extension methods run the query

  15. <book> <title/> <author/> <year/> <price/> </book> Relational Objects XML How Does it Work? C# 3.0 VB 9.0 Others… .NET Language Integrated Query LINQ toObjects LINQ toDatasets LINQ toSQL LINQ toEntities LINQ toXML

  16. How Does it Work? • Extension methods for the from/select/where/groupby keywords • Lambda expressions • Expression tree for building & pre-compiling the statement that will run on a IQueryable<T> • p=> p.CompanyName.StartsWith(“A”) • Iterators for the in-memory queries (IEnumerable<T>) • foreach on an IEnumerable<T>

  17. What’s Next? • PLINQ • Parallel FX Library • IParallelEnumerable<T> • CTP is available • Support for 3rd party DB engines

More Related