Using LINQ with ASP.NET (Part 1)
page 9 of 12
by Scott Guthrie
Feedback
Average Rating: 
Views (Total / Last 10 Days): 23234/ 419

Step 7: Anonymous Types (again)

The previous sample showed a basic example of using anonymous types to custom-shape the output of a LINQ query.  The below sample provides a richer and more practical scenario.  It transforms our list of cities into a hierarchical result collection – where we group the results around countries using an anonymous type that we define that contains the country name, a sub-collection list of city details, and the sum of the total distance of all cities within the country (computed using a lambda expression like we demonstrated in step5 above):

Listing 17

using System;
using System.Web.UI;
using System.Query;
public partial class Step7 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TravelOrganizer travel = new TravelOrganizer();
 
        GridView1.DataSource = from location in travel.PlacesVisited
                               group location by location.Country into loc
                               select new {
                                   Country = loc.Key,
                                   Cities = loc,
                                   TotalDistance = loc.Sum(dist => dist.Distance)
                               };
           
        GridView1.DataBind();
    }
}

The GridView on our .aspx page is then defined like so:

Listing 18

<%@Page Language="C#" AutoEventWireup="true" CodeFile="Step7.aspx.cs"
Inherits="Step7" %>
<html>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>Groupings with Anonymous Classes</h1>
 
        <asp:GridView ID="GridView1" 
AutoGenerateColumns="false" runat="server">
            <Columns>
            
                <asp:BoundField HeaderText="Country" DataField="Country" />
            
                <asp:TemplateField HeaderText="Cities">
                    <ItemTemplate>
                    
                        <asp:BulletedList ID="BulletedList1" runat="server"
                                          DataSource='<%#Eval("Cities")%>'
DataValueField="City"/>
                    
                    </ItemTemplate>
                </asp:TemplateField>
            
                <asp:BoundField HeaderText="Total Distance" 
DataField="TotalDistance" />
            
            </Columns>
        </asp:GridView> 
    </div>
    </form>
</body>
</html>

Notice how I’ve added a GridView templatefield column for the “Cities” column – and within that I’ve then added an <asp:bulletedlist> control (a new control built-in with ASP.NET 2.0) that databinds its values from the cities property of the hierarchical result we created using our LINQ query above.  This generates output like so:

Figure 8

 

<img border=0 width=535 height=581src="/ArticleFiles/922/image007.jpg">

Note that all of the databind syntax and hierarchical binding support in the .aspx page above is fully supported in ASP.NET 2.0 today – so you can use this same technique with any existing app you have now.  What is new (and I think very cool) is the data shaping capabilities provided by anonymous types and LINQ – which makes binding hierarchical data against ASP.NET controls very easy.


View Entire Article

Article Feedback

Title:  
Name:  
Url: ( Optional )
Comment:  
Please add 5 and 4 and type the answer here:

User Comments

Title: LINQ in 2005 and 2008   
Name: Manigandan
Date: 12/16/2008 6:38:07 AM
Comment:
1.We are having this LINQ concept in VS2005 itself...
What is extra facility added in VS2008.

2.If i want to install LINQ separately in VS2005, What is the software that i have to install?
Title: Good one   
Name: Shailendra
Date: 12/9/2008 2:24:22 AM
Comment:
Thanks for all, its very easy to know about linq from these articles.

thanks once again
Title: Trying To Get a Handle On This LINQ Stuff   
Name: D Wiley
Date: 11/21/2008 9:21:36 AM
Comment:
This is on of the best walkthroughs I have seen on the subject.
Title: Leraning LINQ   
Name: Manjeev kumar singh
Date: 10/3/2008 4:00:41 AM
Comment:
This one is most useful article LINQ on web. its really good start for how is beginner in LINQ....
Really thanks
Title: Using Richer Collections   
Name: Nithya K
Date: 9/18/2008 6:58:04 AM
Comment:
Now i got .Its my mistake.
It is very useful
Title: Using Richer Collections   
Name: Nithya K
Date: 9/18/2008 6:00:18 AM
Comment:
i got an error while executing
Title: Using Richer Collections   
Name: Nithya K
Date: 9/18/2008 5:53:19 AM
Comment:
\
\S
\
\
Title: Leraning LINQ   
Name: vanitha
Date: 9/16/2008 1:31:46 AM
Comment:
Very useful in learning the basic concepts of LINQ.
Title: Using LINQ with ASP.NET   
Name: Durai karthik M
Date: 3/15/2008 7:20:50 AM
Comment:
Very clear to understand the LINQ concept . Keep up the good work
Title: -   
Name: martin
Date: 1/21/2008 4:41:46 AM
Comment:
The images aren't shown... you need to remake the picture HTML

Product Spotlight
Product Spotlight 
Learn More
.NET Tools
asp.net shopping cart
asp.net chart control






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2009 ASPAlliance.com  |  Page Processed at 1/7/2009 5:48:15 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search