Using C# LINQ - A Practical Overview
Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
ThenBy(<keySelector>) method
ThenBy()
specifies a secondary sort key that is used to further sort data that has already been sorted with a call to OrderBy()
.
IOrderedEnumerable<T>
ThenBy()
is an interesting method. It is not an extension to IEnumerable<T>
. Instead, it is a method of the IOrderedEnumerable<T>
type, which is returned from OrderBy()
, OrderByDescending()
, ThenBy()
, and ThenByDescending()
.
Since IOrderedEnumerable<T>
implements the IEnumerable<T>
interface, it can be thought of as an IEnumerable<T>
with attached metadata that describes the order operations that have previously been performed on the sequence.
ThenBy()
can be called any number of times, providing a new key on each subsequent call. Here is an example of ThenBy()
usage:
List<string> strings = new List<string> { "first", "then", "and then", "finally" };
// Order by the last character, then by the first character
// Will contain { "and then", "then", "first", "finally" }
IEnumerable<string> result = strings.OrderBy(str => str.Last()).ThenBy(str => str.First());
ThenBy() exercise
In the following exercise, try to order all the input names by Last
. If any names have the same value for Last
, then they should be ordered by First
. If any have matching Last
and First
, then they should be ordered by Middle
.