GroupBy Multiple Values in LINQ





1.00/5 (3 votes)
Jun 3, 2009
4 min read

19393
Here's a simple example to show you how to GroupBy Multiple Valuesusing LINQ. In this example, I am grouping by Age and Sex to find thecount of people who have the same age and sex.
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.KeyNext employee
End Sub
Public Class Employee
Private privateID As IntegerPublic Property ID() As Integer
Get
Return privateIDEnd Get
Set(ByVal value As Integer)
privateID = valueEnd Set
End Property
Private privateFName As String
Public Property FName() As StringGet
Return privateFNameEnd Get
Set(ByVal value As String)
privateFName = valueEnd Set
End Property
Private privateAge As Integer
Public Property Age() As IntegerGet
Return privateAgeEnd Get
Set(ByVal value As Integer)
privateAge = valueEnd Set
End Property
Private privateSex As Char
Public Property Sex() As CharGet
Return privateSexEnd Get
Set(ByVal value As Char)
privateSex = valueEnd Set
End PropertyEnd Class
End Class