Por que estou obtendo resultados errados ao chamar Func <int>?

Tenho o seguinte trecho de código em C #:

var actions = new List<Func<int>>();

IEnumerable<int> values = new List<int> { 1, 2, 3 };

foreach (int value in values)
{
    actions.Add(() => value * value);
}

foreach (var action in actions)
{
    Console.WriteLine(action()); ;
}

Console.ReadLine();

Está funcionando bem, mas não estou obtendo o resultado esperado.

Resultado atua

9,9,9

Resultado esperad

1,4,9

Por que não estou obtendo o resultado esperado?

questionAnswers(2)

yourAnswerToTheQuestion