Reader Level:
Article

Pull Distinct Data Using LINQ-to-XML

By Vijay Prativadi on Nov 06, 2012
Today, in this article let’s play around with one of the interesting and most useful concepts in XML.

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

Vijay Prativadi

Hey Everyone, It's Vijay. I am SDE mostly up on Microsoft Technologies. If you are thinking to know what I do mostly when at work. I get a chance to work upon few Microsoft technologies. All the way along my core tech... Read more

COMMENT USING