Title: LINQ Providers
1LINQ Providers
Or why .NET rules, and Java doesnt
Branimir Giurov
SofiaDev.org UG Lead, C MVP Freelance Software
Developer
www.sofiadev.org
2Contents
- typeof(linq)
- How does it work?
- Lambda, extension methods, iterators
3typeof(linq)
4C 3.0
VB 9.0
Others
.NET Language Integrated Query
LINQ toObjects
LINQ toSQL
LINQ toXML
LINQ toEntities
LINQ toDatasets
5typeof(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
6LINQ 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
7LINQ to Objects
- How to query an array of int?
public void Linq1() int numbers 5, 4,
1, 3, 9, 8, 6, 7, 2, 0 var lowNums
from n in numbers where n lt
5 select n Console.WriteLine("Number
s lt 5") foreach (var x in lowNums)
Console.WriteLine(x)
8LINQ 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 FKs to query/modify data in SQL DB
- Call SubmitChanges() when youre done
- Currently supports SQL 2000 2005
- System.Date.Linq.SqlClient.Sql2000Provider
- System.Date.Linq.SqlClient.Sql2005Provider
9DEMO
LINQ to SQL ToString() Modifying Queries Mapping
Styles Mapping Tools
10LINQ 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
11LINQ to XML
- Combining it with other LINQ technologies makes
life easier
XElement xml new XElement("contacts", new
XElement("contact", new XAttribute("contactId"
, "2"), new XElement("firstName",
"Barry"), new XElement("lastName",
"Gottshall") ), new XElement("contact", new
XAttribute("contactId", "3"), new
XElement("firstName", "Armando"), new
XElement("lastName", "Valdes") ) )
12LINQ to XML
- Result from previous example
ltcontactsgt ltcontact contactId"2"gt
ltfirstNamegtBarrylt/firstNamegt
ltlastNamegtGottshalllt/lastNamegt lt/contactgt
ltcontact contactId"3"gt ltfirstNamegtArmandolt/fi
rstNamegt ltlastNamegtValdeslt/lastNamegt
lt/contactgt lt/contactsgt
13LINQ to DataSet(s)
- Allows developers to query existing DataSet
sources within applications - Offline, still uses IQueryableltTgt 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 -gt DataTable -gt
LINQ Sequence support
14How Does it Work?
- Depends on if the type is 0 or not
- IQueryableltTgt
- System.Linq.Queryable (System.Data.Linq.DataQuerylt
Tgt) - SQL
- Entity
- Datasets
- The extension methods build an expression tree
- If not, then check if it is a IEnumerableltTgt
- System.Linq.IEnumerableltTgt
- Objects
- XML
- The extension methods run the query
15How Does it Work?
C 3.0
VB 9.0
Others
.NET Language Integrated Query
LINQ toObjects
LINQ toSQL
LINQ toXML
LINQ toEntities
LINQ toDatasets
16How Does it Work?
- Extension methods for the from/select/where/groupb
y keywords - Lambda expressions
- Expression tree for building pre-compiling the
statement that will run on a IQueryableltTgt - pgt p.CompanyName.StartsWith(A)
- Iterators for the in-memory queries
(IEnumerableltTgt) - foreach on an IEnumerableltTgt
17Whats Next?
- PLINQ
- Parallel FX Library
- IParallelEnumerableltTgt
- CTP is available
- Support for 3rd party DB engines