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 }