ARTICLE

Pull Distinct Data Using LINQ-to-XML

Posted by Vijay Prativadi Articles | XML November 06, 2012
Today, in this article let’s play around with one of the interesting and most useful concepts in XML.
Reader Level:

Introduction
 
Today, in this article let's play around with one of the interesting and most useful concepts in XML.
 
Question: What is distinct operation using LINQ-to-XML?

In simple terms "It enables the filtering of duplicate data to pull out distinct data using LINQ to XML".

Step 1: Create a new "ASP.NET Web Application", as in:

New-project-in-VS.jpg

Step 2: The complete code of Employee.xml looks like this:

<?xml version="1.0" encoding="utf-8" ?>

<Employees>

  <Employee Id="1">

    <FirstName>Vijay</FirstName>

    <LastName>Prativadi</LastName>

    <Age>26</Age>

  </Employee>

  <Employee Id="1">

    <FirstName>Vijay</FirstName>

    <LastName>Prativadi</LastName>

    <Age>26</Age>

  </Employee>

  <Employee Id="1">

    <FirstName>Vijay</FirstName>

    <LastName>Prativadi</LastName>

    <Age>26</Age>

  </Employee>

  <Employee Id="2">

    <FirstName>Swetha</FirstName>

    <LastName>Prativadi</LastName>

    <Age>23</Age>

  </Employee>

  <Employee Id="2">

    <FirstName>Swetha</FirstName>

    <LastName>Prativadi</LastName>

    <Age>23</Age>

  </Employee>

</Employees> 
 
Step 3: The complete code WebForm1.aspx looks like this:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="RemoveDuplicateLINQtoXMLApp.WebForm1" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    <style type="text/css">

        .grid

        {

            margin-top: 50px;

        }

    </style>

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <center>

        <div>

            <table>

                <tr>

                    <td colspan="2" align="center">

                        <asp:Label ID="Label1" runat="server" Text="Distinct Data using LINQ-to-XML" Font-Bold="true"

                            Font-Size="Large" Font-Names="Verdana" ForeColor="Maroon"></asp:Label>

                    </td>

                </tr>

                <tr>

                    <td colspan="2" align="center">

                        <asp:Button ID="Button1" runat="server" Text="Select Data" Font-Names="Verdana" Width="213px"

                            BackColor="Orange" Font-Bold="True" OnClick="Button1_Click" />

                    </td>

                </tr>

                <tr>

                    <td colspan="2" align="center">

                        <asp:GridView ID="GridView1" runat="server" CssClass="grid" BackColor="LightGoldenrodYellow"

                            BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None">

                            <AlternatingRowStyle BackColor="PaleGoldenrod" />

                            <FooterStyle BackColor="Tan" />

                            <HeaderStyle BackColor="Tan" Font-Bold="True" />

                            <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />

                            <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />

                            <sortedascendingcellstyle backcolor="#FAFAE7" />

                            <sortedascendingheaderstyle backcolor="#DAC09E" />

                            <sorteddescendingcellstyle backcolor="#E1DB9C" />

                            <sorteddescendingheaderstyle backcolor="#C2A47B" />

                        </asp:GridView>

                    </td>

                </tr>

            </table>

        </div>

    </center>

    </form>

</body>

</html>


Step 4: The complete code WebForm1.aspx.cs looks like this:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Xml.Linq;

namespace RemoveDuplicateLINQtoXMLApp

{

    public partial class WebForm1 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

        }

        protected void Button1_Click(object sender, EventArgs e)

        {

            XElement employee = XElement.Load(@"c:\users\administrator\documents\visual studio 2010\Projects\RemoveDuplicateLINQtoXMLApp\RemoveDuplicateLINQtoXMLApp\Employee.xml");

            var result = from r in employee.Descendants("Employee")

                         group r by (string)r.Attribute("Id") into p

                         select new

                             {

                                 FirstName = (string)p.Elements("FirstName").First(),

                                 LastName = (string)p.Elements("LastName").First(),

                                 Age = (int)p.Elements("Age").First()

                             };

            GridView1.DataSource = result;

            GridView1.DataBind();

        }

    }

}

Step 5: The output of application looks like this:


output-of-application-in-linq-to-xml.jpg

Step 6: The data retrieved output of application looks like this:


Retrieved-output-of-application-in-linq-to-xml.jpg

Login to add your contents and source code to this article
comments
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Nevron Diagram