SlideShare uma empresa Scribd logo
1 de 21
LINQ
 Language Integrated Query (LINQ, pronounced "link") is
a Microsoft .NET Framework component that adds native
data querying capabilities to .NET languages, although ports exist
for Java, PHP and JavaScript.
 LINQ defines a set of method names (called standard query
operators, or standard sequence operators), along with translation
rules from so-called query expressions to expressions using these
method names, lambda expressions and anonymous types. These
can, for example, be used to project and filter data into arrays,
enumerable classes, XML (LINQ to XML), relational databases, and
third party data sources.
ADVANTAGES

Quick turn around for development
Queries can be dynamically run
Tables are automatically created into class
Columns are automatically created into properties
Relationship are automatically applied to classes
Lambda expressions are awesome
Data is easy to setup and use
DISADVANTAGES
No clear outline for Tiers
No good way of view permissions
Small data sets will take longer to build the query than
execute
There is an overhead for creating queries
When queries are moved from sql to application side,
joins are very slow
DBMS concurrency issues
Hard to understand advance queries using
Expressions
LINQ Providers

The C# 3.0 specification defines a so-
called Query Expression Pattern along with
translation rules from a LINQ expression to an
expression in a subset of C# 3.0 without LINQ
expressions.
These different providers define the different flavors
of LINQ:


  LINQ to Objects: The LINQ to Objects provider is used for in-memory
  collections, using the local query execution engine of LINQ.


  LINQ to XML (formerly called XLINQ): The LINQ to XML provider
  converts an XML document to a collection of XElement objects, which
  are then queried against using the local execution engine that is
  provided as a part of the implementation of the standard query
  operator.
LINQ to SQL (formerly called DLINQ): The LINQ to SQL provider
allows LINQ to be used to query SQL Server databases,
including SQL Server Compact databases. Since SQL Server data
may reside on a remote server, and because SQL Server has its own
query engine, LINQ to SQL does not use the query engine of LINQ.


LINQ to DataSets: The LINQ to SQL provider works only
with Microsoft SQL Server databases; to support any generic
database, LINQ also includes the LINQ to DataSets, which uses
ADO.NET to handle the communication with the database. Once the
data is in ADO.NET Datasets, LINQ to DataSets execute queries
against these datasets.
What is LINQ to XML?
Working with XML using Microsoft's .NET Framework version 2.0 and
below is a cumbersome task.
The API available follows the W3C DOM model, and is document-
centric. Everything begins with the document; you can't create elements
without having a document; even a fragment of XML is a document.
In the latest release of the .NET Framework, however, this has
changed. XML is now element-centric.
 With features like object initialization and anonymous types, it's very
easy to create XML. Add to this the features of LINQ, and we now have a
very easy to use and powerful tool for XML.
What is LINQ to XML?
LINQ to XML is a LINQ-enabled, in-memory XML programming
interface that enables you to work with XML from within the .NET
Framework programming languages.
LINQ to XML is like the Document Object Model (DOM) in that it
brings the XML document into memory. You can query and modify
the document, and after you modify it you can save it to a file or
serialize it and send it over the Internet. However, LINQ to XML
differs from DOM: It provides a new object model that is lighter weight
and easier to work with, and that takes advantage of language
improvements in Visual C# 2008.
The most important advantage of LINQ to XML is its integration with
Language-Integrated Query (LINQ). This integration enables to write
queries on the in-memory XML document to retrieve collections of
elements and attributes. The query capability of LINQ to XML is
comparable in functionality (although not in syntax) to XPath and XQuery.
The integration of LINQ in Visual C# 2008 provides stronger typing,
compile-time checking, and improved debugger support.


All LINQ to XML types are defined in the System.Xml.Linq namespace.


LINQ to XML comprises of an XML DOM, which we call the X-DOM
X-DOM Overview

XObject is the root of the inheritance hierarchy;
XElement and XDocument are roots of the containership hierarchy.
The System.Xml.Linq Namespace

LINQ to XML allows querying XML data. A new namespace in .NET
3.5, System.Xml.Linq, contains classes for creating and querying XML
trees:
 Xname: Represents a name of an XML element or attribute.
 XNode represents the abstract concept of a node in the XML tree.
 XContainer, derived from XNode, is an abstract base class for all
   nodes that can have child nodes ;is the base class for XDocument
   and XElement.
 XDocument represents an XML document, that contains the root
   level XML constructs, such as: a document type declaration
   (XDocumentType), one root element (XElement), zero or more
   comments objects (XComment).
 XElement is the fundamental type for constructing XML data; it
  has an XName, optionally one or more attributes, and can also
  have content. An element is actually a container (derived from
  XContainer), that contains other XML nodes (XNode), such as
  XComment, XProcessingInstruction or XText.


 XAttribute represents an XML attribute; Attributes are not nodes
  in the XML tree, thus not derived from XNode.
 XComment, used for comments to the root node or as children of
  an element.
Constructing an XML document using LINQ
The LINQ to XML object model does provides XDocuments and XElement classes to
construct XML Documents.
Step 1:

XElement salesorder= new XElement("SALESORDER",
  new XElement("SOHEADER",
  new XElement("ORDERID",123),
  new XElement("CUSTOMERNAME","ABC")),
new XElement("SOLINE",
new XElement("ITEMNAME","2006")));

Step 2:

XDocument doc= new XDocument(new XDeclaration("1.0","utf-8",""),
new XComment("LINQ to XML salesorder"),
       salesorder);

Step 3:

doc.Save(“XMLFile.xml");
Output of XMLFile.xml
<?xml version="1.0" encoding="utf-8"?>
<!--LINQ to XML salesorder-->
<SALESORDER>
 <SOHEADER>
  <ORDERID>123</ORDERID>
  <CUSTOMERNAME>ABC</CUSTOMERNAME>
 </SOHEADER>
 <SOLINE>
  <ITEMNAME>2006</ITEMNAME>
 </SOLINE>
</SALESORDER>

Constructing a document in this way is possible because of the functional
construction feature in LINQ to XML. Functional construction is simply a means of
creating an entire document tree in a single statement.
Load an XML document



We can load existing XML file into a LINQ in XML tree so that we can
read it, manupulate it.

XElement salesorder = XElement.Load(@”C:/so.xml”);

XElement.load method is used to load the xml into XElement from any
file or textreader.
Traversing XML

    LINQ to XML provides method for getting the children of an
    XElement. Nodes() method is used to get all the children of an
    XElement( or an XDocument).

    foreach(c in salesorder.Nodes())
    {
    Console.writeLine( c );
    }
Inserting XML in LINQ




We can easily add element to the LINQ to XML object model
easily by using Add() method.

Salesorder.Add(new Element(“SOLINES”,
                new Element(“ITEMNAME”,2009));
Deleting XML element in LINQ




To delete specific Xelement, we need to navigate to the contents to
delete and call the Remove() method.

Salesorder.Element(“SOLINES”).Remove();
Updating XML in LINQ



To update XML, navigate to Xelement whose contents is to be
replaced and then use the ReplaceNode() method.

Xelement header=salesorder.Element(“SOHEADER”);
Xelement orderid=header.Element(“ORDERID”);
Orderid.ReplaceNodes(“456”);
Thank You

Mais conteúdo relacionado

Mais procurados (20)

Regular Languages
Regular LanguagesRegular Languages
Regular Languages
 
Prims and kruskal algorithms
Prims and kruskal algorithmsPrims and kruskal algorithms
Prims and kruskal algorithms
 
BINARY TREE REPRESENTATION.ppt
BINARY TREE REPRESENTATION.pptBINARY TREE REPRESENTATION.ppt
BINARY TREE REPRESENTATION.ppt
 
Avl tree detailed
Avl tree detailedAvl tree detailed
Avl tree detailed
 
Optimal binary search tree dynamic programming
Optimal binary search tree   dynamic programmingOptimal binary search tree   dynamic programming
Optimal binary search tree dynamic programming
 
Logic programming (1)
Logic programming (1)Logic programming (1)
Logic programming (1)
 
8. transactions
8. transactions8. transactions
8. transactions
 
Introduction To Autumata Theory
 Introduction To Autumata Theory Introduction To Autumata Theory
Introduction To Autumata Theory
 
Data Structure (Tree)
Data Structure (Tree)Data Structure (Tree)
Data Structure (Tree)
 
Java socket programming
Java socket programmingJava socket programming
Java socket programming
 
Linked List - Insertion & Deletion
Linked List - Insertion & DeletionLinked List - Insertion & Deletion
Linked List - Insertion & Deletion
 
Relational Algebra,Types of join
Relational Algebra,Types of joinRelational Algebra,Types of join
Relational Algebra,Types of join
 
Java Networking
Java NetworkingJava Networking
Java Networking
 
Networking in Java
Networking in JavaNetworking in Java
Networking in Java
 
Lecture Notes-Finite State Automata for NLP.pdf
Lecture Notes-Finite State Automata for NLP.pdfLecture Notes-Finite State Automata for NLP.pdf
Lecture Notes-Finite State Automata for NLP.pdf
 
Minimum spanning tree
Minimum spanning treeMinimum spanning tree
Minimum spanning tree
 
PyCharm demo
PyCharm demoPyCharm demo
PyCharm demo
 
Applications of Mealy & Moore Machine
Applications of  Mealy  & Moore Machine Applications of  Mealy  & Moore Machine
Applications of Mealy & Moore Machine
 
Lower bound
Lower boundLower bound
Lower bound
 
Sql joins
Sql joinsSql joins
Sql joins
 

Semelhante a Linq to xml

Working with xml data
Working with xml dataWorking with xml data
Working with xml dataaspnet123
 
Applied xml programming for microsoft
Applied xml programming for microsoftApplied xml programming for microsoft
Applied xml programming for microsoftRaghu nath
 
LINQ to XML
LINQ to XMLLINQ to XML
LINQ to XMLukdpe
 
Asp.Net 3.5 Part 2
Asp.Net 3.5 Part 2Asp.Net 3.5 Part 2
Asp.Net 3.5 Part 2asim78
 
Sql Summit Clr, Service Broker And Xml
Sql Summit   Clr, Service Broker And XmlSql Summit   Clr, Service Broker And Xml
Sql Summit Clr, Service Broker And XmlDavid Truxall
 
Fyp presentation 2 (SQL Converter)
Fyp presentation 2 (SQL Converter)Fyp presentation 2 (SQL Converter)
Fyp presentation 2 (SQL Converter)Muhammad Shafiq
 
epicenter2010 Open Xml
epicenter2010   Open Xmlepicenter2010   Open Xml
epicenter2010 Open XmlCraig Murphy
 
IT6801-Service Oriented Architecture
IT6801-Service Oriented ArchitectureIT6801-Service Oriented Architecture
IT6801-Service Oriented ArchitectureMadhu Amarnath
 
Net Fundamentals
Net FundamentalsNet Fundamentals
Net FundamentalsAli Taki
 
The LINQ Between XML and Database
The LINQ Between XML and DatabaseThe LINQ Between XML and Database
The LINQ Between XML and DatabaseIRJET Journal
 

Semelhante a Linq to xml (20)

Working with xml data
Working with xml dataWorking with xml data
Working with xml data
 
Linq in C#
Linq in C#Linq in C#
Linq in C#
 
Applied xml programming for microsoft
Applied xml programming for microsoftApplied xml programming for microsoft
Applied xml programming for microsoft
 
Linq To XML Overview
Linq To XML OverviewLinq To XML Overview
Linq To XML Overview
 
LINQ to XML
LINQ to XMLLINQ to XML
LINQ to XML
 
Asp.Net 3.5 Part 2
Asp.Net 3.5 Part 2Asp.Net 3.5 Part 2
Asp.Net 3.5 Part 2
 
Sql Summit Clr, Service Broker And Xml
Sql Summit   Clr, Service Broker And XmlSql Summit   Clr, Service Broker And Xml
Sql Summit Clr, Service Broker And Xml
 
UNIT-1 Web services
UNIT-1 Web servicesUNIT-1 Web services
UNIT-1 Web services
 
Unit 3 WEB TECHNOLOGIES
Unit 3 WEB TECHNOLOGIES Unit 3 WEB TECHNOLOGIES
Unit 3 WEB TECHNOLOGIES
 
dot NET Framework
dot NET Frameworkdot NET Framework
dot NET Framework
 
Fyp presentation 2 (SQL Converter)
Fyp presentation 2 (SQL Converter)Fyp presentation 2 (SQL Converter)
Fyp presentation 2 (SQL Converter)
 
epicenter2010 Open Xml
epicenter2010   Open Xmlepicenter2010   Open Xml
epicenter2010 Open Xml
 
IT6801-Service Oriented Architecture
IT6801-Service Oriented ArchitectureIT6801-Service Oriented Architecture
IT6801-Service Oriented Architecture
 
Net Fundamentals
Net FundamentalsNet Fundamentals
Net Fundamentals
 
treeview
treeviewtreeview
treeview
 
treeview
treeviewtreeview
treeview
 
dotNETfinal.ppt
dotNETfinal.pptdotNETfinal.ppt
dotNETfinal.ppt
 
dotNETfinal.ppt
dotNETfinal.pptdotNETfinal.ppt
dotNETfinal.ppt
 
The LINQ Between XML and Database
The LINQ Between XML and DatabaseThe LINQ Between XML and Database
The LINQ Between XML and Database
 
.NET Tutorial
.NET Tutorial.NET Tutorial
.NET Tutorial
 

Último

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 

Último (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Linq to xml

  • 1.
  • 2. LINQ  Language Integrated Query (LINQ, pronounced "link") is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages, although ports exist for Java, PHP and JavaScript.  LINQ defines a set of method names (called standard query operators, or standard sequence operators), along with translation rules from so-called query expressions to expressions using these method names, lambda expressions and anonymous types. These can, for example, be used to project and filter data into arrays, enumerable classes, XML (LINQ to XML), relational databases, and third party data sources.
  • 3. ADVANTAGES Quick turn around for development Queries can be dynamically run Tables are automatically created into class Columns are automatically created into properties Relationship are automatically applied to classes Lambda expressions are awesome Data is easy to setup and use
  • 4. DISADVANTAGES No clear outline for Tiers No good way of view permissions Small data sets will take longer to build the query than execute There is an overhead for creating queries When queries are moved from sql to application side, joins are very slow DBMS concurrency issues Hard to understand advance queries using Expressions
  • 5. LINQ Providers The C# 3.0 specification defines a so- called Query Expression Pattern along with translation rules from a LINQ expression to an expression in a subset of C# 3.0 without LINQ expressions.
  • 6. These different providers define the different flavors of LINQ: LINQ to Objects: The LINQ to Objects provider is used for in-memory collections, using the local query execution engine of LINQ. LINQ to XML (formerly called XLINQ): The LINQ to XML provider converts an XML document to a collection of XElement objects, which are then queried against using the local execution engine that is provided as a part of the implementation of the standard query operator.
  • 7. LINQ to SQL (formerly called DLINQ): The LINQ to SQL provider allows LINQ to be used to query SQL Server databases, including SQL Server Compact databases. Since SQL Server data may reside on a remote server, and because SQL Server has its own query engine, LINQ to SQL does not use the query engine of LINQ. LINQ to DataSets: The LINQ to SQL provider works only with Microsoft SQL Server databases; to support any generic database, LINQ also includes the LINQ to DataSets, which uses ADO.NET to handle the communication with the database. Once the data is in ADO.NET Datasets, LINQ to DataSets execute queries against these datasets.
  • 8. What is LINQ to XML? Working with XML using Microsoft's .NET Framework version 2.0 and below is a cumbersome task. The API available follows the W3C DOM model, and is document- centric. Everything begins with the document; you can't create elements without having a document; even a fragment of XML is a document. In the latest release of the .NET Framework, however, this has changed. XML is now element-centric.  With features like object initialization and anonymous types, it's very easy to create XML. Add to this the features of LINQ, and we now have a very easy to use and powerful tool for XML.
  • 9. What is LINQ to XML? LINQ to XML is a LINQ-enabled, in-memory XML programming interface that enables you to work with XML from within the .NET Framework programming languages. LINQ to XML is like the Document Object Model (DOM) in that it brings the XML document into memory. You can query and modify the document, and after you modify it you can save it to a file or serialize it and send it over the Internet. However, LINQ to XML differs from DOM: It provides a new object model that is lighter weight and easier to work with, and that takes advantage of language improvements in Visual C# 2008.
  • 10. The most important advantage of LINQ to XML is its integration with Language-Integrated Query (LINQ). This integration enables to write queries on the in-memory XML document to retrieve collections of elements and attributes. The query capability of LINQ to XML is comparable in functionality (although not in syntax) to XPath and XQuery. The integration of LINQ in Visual C# 2008 provides stronger typing, compile-time checking, and improved debugger support. All LINQ to XML types are defined in the System.Xml.Linq namespace. LINQ to XML comprises of an XML DOM, which we call the X-DOM
  • 11. X-DOM Overview XObject is the root of the inheritance hierarchy; XElement and XDocument are roots of the containership hierarchy.
  • 12. The System.Xml.Linq Namespace LINQ to XML allows querying XML data. A new namespace in .NET 3.5, System.Xml.Linq, contains classes for creating and querying XML trees:  Xname: Represents a name of an XML element or attribute.  XNode represents the abstract concept of a node in the XML tree.  XContainer, derived from XNode, is an abstract base class for all nodes that can have child nodes ;is the base class for XDocument and XElement.  XDocument represents an XML document, that contains the root level XML constructs, such as: a document type declaration (XDocumentType), one root element (XElement), zero or more comments objects (XComment).
  • 13.  XElement is the fundamental type for constructing XML data; it has an XName, optionally one or more attributes, and can also have content. An element is actually a container (derived from XContainer), that contains other XML nodes (XNode), such as XComment, XProcessingInstruction or XText.  XAttribute represents an XML attribute; Attributes are not nodes in the XML tree, thus not derived from XNode.  XComment, used for comments to the root node or as children of an element.
  • 14. Constructing an XML document using LINQ The LINQ to XML object model does provides XDocuments and XElement classes to construct XML Documents. Step 1: XElement salesorder= new XElement("SALESORDER", new XElement("SOHEADER", new XElement("ORDERID",123), new XElement("CUSTOMERNAME","ABC")), new XElement("SOLINE", new XElement("ITEMNAME","2006"))); Step 2: XDocument doc= new XDocument(new XDeclaration("1.0","utf-8",""), new XComment("LINQ to XML salesorder"), salesorder); Step 3: doc.Save(“XMLFile.xml");
  • 15. Output of XMLFile.xml <?xml version="1.0" encoding="utf-8"?> <!--LINQ to XML salesorder--> <SALESORDER> <SOHEADER> <ORDERID>123</ORDERID> <CUSTOMERNAME>ABC</CUSTOMERNAME> </SOHEADER> <SOLINE> <ITEMNAME>2006</ITEMNAME> </SOLINE> </SALESORDER> Constructing a document in this way is possible because of the functional construction feature in LINQ to XML. Functional construction is simply a means of creating an entire document tree in a single statement.
  • 16. Load an XML document We can load existing XML file into a LINQ in XML tree so that we can read it, manupulate it. XElement salesorder = XElement.Load(@”C:/so.xml”); XElement.load method is used to load the xml into XElement from any file or textreader.
  • 17. Traversing XML LINQ to XML provides method for getting the children of an XElement. Nodes() method is used to get all the children of an XElement( or an XDocument). foreach(c in salesorder.Nodes()) { Console.writeLine( c ); }
  • 18. Inserting XML in LINQ We can easily add element to the LINQ to XML object model easily by using Add() method. Salesorder.Add(new Element(“SOLINES”, new Element(“ITEMNAME”,2009));
  • 19. Deleting XML element in LINQ To delete specific Xelement, we need to navigate to the contents to delete and call the Remove() method. Salesorder.Element(“SOLINES”).Remove();
  • 20. Updating XML in LINQ To update XML, navigate to Xelement whose contents is to be replaced and then use the ReplaceNode() method. Xelement header=salesorder.Element(“SOHEADER”); Xelement orderid=header.Element(“ORDERID”); Orderid.ReplaceNodes(“456”);