OrderBy creates a sorted sequence without changing the original values.

OrderBy `OrderBy` sorts a sequence by a selected key.

OrderBy

extra
OrderByExample.cs
Replay: real traced execution (multi-file project)
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int extra = 4;
        int[] values = { 3, extra, 1 };
        int[] ordered = values.OrderBy(value => value).ToArray();
        string joined = string.Join(",", ordered);

        Console.WriteLine($"extra={extra}");
        Console.WriteLine($"ordered={joined}");
    }
}
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int extra = 2;
        int[] values = { 3, extra, 1 };
        int[] ordered = values.OrderBy(value => value).ToArray();
        string joined = string.Join(",", ordered);

        Console.WriteLine($"extra={extra}");
        Console.WriteLine($"ordered={joined}");
    }
}
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int extra = 9;
        int[] values = { 3, extra, 1 };
        int[] ordered = values.OrderBy(value => value).ToArray();
        string joined = string.Join(",", ordered);

        Console.WriteLine($"extra={extra}");
        Console.WriteLine($"ordered={joined}");
    }
}
  1. extra ← 4, joined ← 1,3,4

    5{6    static void Main()7    {8        int extra→ 4 = 4; //@extra=2, 99        int[] values = { 3, extra4, 1 };10        int[] ordered = values.OrderBy(value => value).ToArray();11        string joined→ 1,3,4 = string.Join(",", ordered);1213        Console.WriteLine($"extra={extra4}");14        Console.WriteLine($"ordered={joined1,3,4}");15    }
    outputextra=4
    ordered=1,3,4
  1. extra ← 2, joined ← 1,2,3

    5{6    static void Main()7    {8        int extra→ 2 = 2;9        int[] values = { 3, extra2, 1 };10        int[] ordered = values.OrderBy(value => value).ToArray();11        string joined→ 1,2,3 = string.Join(",", ordered);1213        Console.WriteLine($"extra={extra2}");14        Console.WriteLine($"ordered={joined1,2,3}");15    }
    outputextra=2
    ordered=1,2,3
  1. extra ← 9, joined ← 1,3,9

    5{6    static void Main()7    {8        int extra→ 9 = 9;9        int[] values = { 3, extra9, 1 };10        int[] ordered = values.OrderBy(value => value).ToArray();11        string joined→ 1,3,9 = string.Join(",", ordered);1213        Console.WriteLine($"extra={extra9}");14        Console.WriteLine($"ordered={joined1,3,9}");15    }
    outputextra=9
    ordered=1,3,9