Where keeps only the values that match a condition.

Where `Where` filters a sequence with a predicate.

Where Filter

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

class Program
{
    static void Main()
    {
        int minimum = 4;
        int[] values = { 1, 3, 5, 7 };
        int[] kept = values.Where(value => value >= minimum).ToArray();
        string joined = string.Join(",", kept);

        Console.WriteLine($"minimum={minimum}");
        Console.WriteLine($"kept={joined}");
    }
}
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int minimum = 2;
        int[] values = { 1, 3, 5, 7 };
        int[] kept = values.Where(value => value >= minimum).ToArray();
        string joined = string.Join(",", kept);

        Console.WriteLine($"minimum={minimum}");
        Console.WriteLine($"kept={joined}");
    }
}
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int minimum = 6;
        int[] values = { 1, 3, 5, 7 };
        int[] kept = values.Where(value => value >= minimum).ToArray();
        string joined = string.Join(",", kept);

        Console.WriteLine($"minimum={minimum}");
        Console.WriteLine($"kept={joined}");
    }
}
  1. minimum ← 4, joined ← 5,7

    5{6    static void Main()7    {8        int minimum→ 4 = 4; //@minimum=2, 69        int[] values = { 1, 3, 5, 7 };10        int[] kept = values.Where(value => value >= minimum).ToArray();11        string joined→ 5,7 = string.Join(",", kept);1213        Console.WriteLine($"minimum={minimum4}");14        Console.WriteLine($"kept={joined5,7}");15    }
    outputminimum=4
    kept=5,7
  1. minimum ← 2, joined ← 3,5,7

    5{6    static void Main()7    {8        int minimum→ 2 = 2;9        int[] values = { 1, 3, 5, 7 };10        int[] kept = values.Where(value => value >= minimum).ToArray();11        string joined→ 3,5,7 = string.Join(",", kept);1213        Console.WriteLine($"minimum={minimum2}");14        Console.WriteLine($"kept={joined3,5,7}");15    }
    outputminimum=2
    kept=3,5,7
  1. minimum ← 6, joined ← 7

    5{6    static void Main()7    {8        int minimum→ 6 = 6;9        int[] values = { 1, 3, 5, 7 };10        int[] kept = values.Where(value => value >= minimum).ToArray();11        string joined→ 7 = string.Join(",", kept);1213        Console.WriteLine($"minimum={minimum6}");14        Console.WriteLine($"kept={joined7}");15    }
    outputminimum=6
    kept=7