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
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