Click here to Skip to main content
Click here to Skip to main content
Technical Blog

Tagged as

GroupBy Multiple Values in LINQ

, 23 Apr 2009 CPOL
Rate this:
Please Sign up or sign in to vote.
A simple example to show you how to GroupBy Multiple Values using LINQ

Introduction

Here's a simple example to show you how to GroupBy Multiple Values using LINQ. In this example, I am grouping by Age and Sex to find the count of people who have the same age and sex.

C#

public partial class LINQ : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e) 
    {
      List<Employee> empList = new List<Employee>(); 
      empList.Add(new Employee() { ID = 1, FName = "John", Age=23, Sex='M'  });
      empList.Add(new Employee() { ID = 2, FName = "Mary", Age = 25, Sex = 'F' }); 

      empList.Add(new Employee() { ID = 3, FName = "Amber", Age = 23, Sex = 'M' }); 
      empList.Add(new Employee() { ID = 4, FName = "Kathy", Age=25, Sex='M'});
      empList.Add(new Employee() { ID = 5, FName = "Lena", Age=27, Sex='F'}); 

      empList.Add(new Employee() { ID = 6, FName = "Bill", Age = 28, Sex = 'M' }); 

      empList.Add(new Employee() { ID = 7, FName = "Celina", Age = 27, Sex = 'F' }); 
      empList.Add(new Employee() { ID = 8, FName = "John", Age = 28, Sex = 'M' });
  
      var sums = empList
               .GroupBy(x => new { x.Age, x.Sex }) 
               .Select(group => new { Peo = group.Key, Count = group.Count() });
  
      foreach (var employee in sums)          
          Response.Write(employee.Count + ": " + employee.Peo);
    } 

    class Employee 
    {
        public int ID { get; set; } 
        public string FName { get; set; }
        public int Age { get; set; } 
        public char Sex { get; set; }
    }

VB.NET

Partial Public Class LINQ 
    Inherits System.Web.UI.Page  

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
        Dim empList As New List(Of Employee)()
        empList.Add(New Employee() With _
		{.ID = 1, .FName = "John", .Age = 23, .Sex = "M"c}) 
        empList.Add(New Employee() With _
		{.ID = 2, .FName = "Mary", .Age = 25, .Sex = "F"c})
        empList.Add(New Employee() With _
		{.ID = 3, .FName = "Amber", .Age = 23, .Sex = "M"c}) 
        empList.Add(New Employee() With _
		{.ID = 4, .FName = "Kathy", .Age = 25, .Sex = "M"c})
        empList.Add(New Employee() With _
		{.ID = 5, .FName = "Lena", .Age = 27, .Sex = "F"c}) 
        empList.Add(New Employee() With _
		{.ID = 6, .FName = "Bill", .Age = 28, .Sex = "M"c})
        empList.Add(New Employee() With _
		{.ID = 7, .FName = "Celina", .Age = 27, .Sex = "F"c}) 
        empList.Add(New Employee() With _
		{.ID = 8, .FName = "John", .Age = 28, .Sex = "M"c})
        Dim sums = empList.GroupBy(Function(x) New With {Key x.Age,
            Key x.Sex}).Select(Function(group) New With {Key .Peo = group.Key,
            Key .Count = group.Count()}) 

        For Each employee In sums 
            ' use employee.Count and employee.Key
        Next employee 

    End Sub 
 
    Public Class Employee 
        Private privateID As Integer
        Public Property ID() As Integer 

            Get 
                Return privateID
            End Get 

            Set(ByVal value As Integer) 
                privateID = value
            End Set 

        End Property 

        Private privateFName As String 
        Public Property FName() As String
            Get 
                Return privateFName
            End Get 

            Set(ByVal value As String) 
                privateFName = value
            End Set 
        End Property  

        Private privateAge As Integer 
        Public Property Age() As Integer
            Get 
                Return privateAge
            End Get 

            Set(ByVal value As Integer) 
                privateAge = value
            End Set 
        End Property  

        Private privateSex As Char 
        Public Property Sex() As Char
            Get 
                Return privateSex
            End Get 

            Set(ByVal value As Char) 
                privateSex = value
            End Set 
        End Property
    End Class 

End Class

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

merlin981
Software Developer (Senior)
United States United States
Winner - Best Mobile App - AT&T Developer Summit, Las Vegas, 2013
 
My personal resume can be found at: http://www.philippiercedeveloper.com
 
My game portfolio can be found at: http://www.rocketgamesmobile.com
 
About Philip Pierce:
 
I am a software developer with twenty years experience in game development, mobile, web, desktop, server, and database. My extensive background highlights an expertise in rapid application development using the latest Microsoft, Mobile, and Game Development technologies, along with the ability to create AI for games and business software, redesign existing software, develop multi-threaded software, and create client/server applications.

Comments and Discussions

 
GeneralUsing VB Linq expressions PinmemberMark Hurd10-Feb-10 14:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.1411022.1 | Last Updated 23 Apr 2009
Article Copyright 2009 by merlin981
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid