var product = vals.Aggregate(1, (acc, val) => acc * val);
Вы начинаете с семени 1, а затем вызывается функция для каждого из ваших значений с двумя аргументами, acc, которая является текущим накопленным значением, и val, которая является значением в массиве; функция умножает текущее накопленное значение на значение в массиве, и результат этого выражения передается как acc следующей функции. то есть цепочка вызовов функций с предоставленным массивом будет: