É muito comum usar o método GroupBy para agrupar objetos com base no valor do campo, propriedade ou método retornado.
var groupedByAge = people.GroupBy (p => p.Age);
Mas você também pode agrupar objetos com base no valor de não apenas um campo, mas mais.
Exemplo:
var people = new[]
{
new Person
{
Name = "Marwan",
Age = 25,
JobTitle ="Developer"
},
new Person
{
Name = "Hamed",
Age = 24,
JobTitle ="Designer"
},
new Person
{
Name = "Atef",
Age = 24,
JobTitle ="Designer"
},
new Person
{
Name = "Khaled",
Age = 24,
JobTitle ="DB Admin"
}
};
var byAge = people.GroupBy(p => p.Age);
foreach (var group in byAge)
{
Console.WriteLine("Age {0}", group.Key);
foreach (var person in group)
{
Console.WriteLine("t{0}", person.Name);
}
}
var byAgeAndJobTitle = people
.GroupBy(p => new {
p.Age,
p.JobTitle
});
foreach (var group in byAgeAndJobTitle)
{
Console.WriteLine("Age {0} and Job Title {1}",
group.Key.Age, group.Key.JobTitle);
foreach (var person in group)
{
Console.WriteLine("t{0}", person.Name);
}
}
Console.Read();