Using LINQ, you can order a collection using the OrderBy (or the OrderByDescending) extension methods.

Let us use a simple program here to generate a collection of 15 numbers.

``````// Create a new Random with a seed
var rnd = new Random(500);

// Generate a list of numbers sorted randomly
var numbers = Enumerable.Range(1, 15).OrderBy(element => rnd.Next()).ToList();

// Print the numbers
PrintNumbers(numbers);
``````

Here I am passing a seed to the Random so that I can get back a predictable set of numbers.

`PrintNumbers` is this function:

``````void PrintNumbers(List<int> collection)
{
collection.ForEach(number => Console.WriteLine(number));
}
``````

This should print something like this:

``````3
4
8
13
6
2
14
10
11
12
9
7
1
5
15
``````

If I want to order this collection of numbers into a second `List<int>` I do it like this:

``````var ordered = numbers.OrderBy(number => number).ToList();

PrintNumbers(ordered);
``````

This should print the following:

``````1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
``````

Notice here the lambda to sort references itself.

In .NET 7, you can do away with this altogether, using the new Order method.

``````var ordered2 = numbers.Order().ToList();

PrintNumbers(ordered2);
``````

Much cleaner.

Naturally, there is an equivalent for ordering in descending order - OrderDescending

It works like this:

``````var reversed = numbers.OrderDescending().ToList();

PrintNumbers(reversed);
``````

This is a tiny change in the larger scheme of things, but it makes the code a lot more cleaner and understandable.

The code is in my GitHub.

Happy hacking!