# ThenBy
How do I order an array or list on multiple properties or fields? This is where ThenBy
can be used.
# Basic example
We have a list of people and we need to order by their names alphabetically in ascending order, followed by their age in ascending order.
# Method syntax
In the Method syntax, we can simply chain the OrderBy
and ThenyBy
methods.
Live example: https://dotnetfiddle.net/CnQkAx
var people = new[]
{
new {Name = "Jennifer", Age = 21},
new {Name = "Alton", Age = 22},
new {Name = "Adam", Age = 27},
new {Name = "Milford", Age = 23},
new {Name = "James", Age = 23}
};
var orderedPeople = people.OrderBy(x => x.Name)
.ThenBy(x => x.Age);
// output:
// { Name = Adam, Age = 27 }
// { Name = Alton, Age = 22 }
// { Name = James, Age = 23 }
// { Name = Jennifer, Age = 21 }
// { Name = Milford, Age = 23 }
# Query syntax
In the query syntax, you simply specify the following property by a separating comma.
Live example: https://dotnetfiddle.net/uqmSAO
var people = new[]
{
new {Name = "Jennifer", Age = 21},
new {Name = "Alton", Age = 22},
new {Name = "Adam", Age = 27},
new {Name = "Milford", Age = 23},
new {Name = "James", Age = 23}
};
var orderedPeople = from person in people
orderby person.Name , person.Age
select person;
// output:
// { Name = Adam, Age = 27 }
// { Name = Alton, Age = 22 }
// { Name = James, Age = 23 }
// { Name = Jennifer, Age = 21 }
// { Name = Milford, Age = 23 }