Умножение всех значений в IEnumerable <int> - PullRequest
25 голосов
/ 14 сентября 2010

У меня есть следующий код, и я пытаюсь понять, как умножить все значения в моем IEnumerable<int>.

Я подумал, что может с помощью метода Multiply, как с Sum. Думаю, я мог бы сделать foreach для каждого элемента, но в наши дни это кажется утомительным.

Есть предложения?

//1:2:6
string[] pkgratio = comboBox1.SelectedRow.Cells["PkgRatio"].Value.ToString().Split(':');
var ints = pkgratio.Select(x => int.Parse(x));         

int modvalue = ints....

1 Ответ

44 голосов
/ 14 сентября 2010

Вам нужна функция агрегирования

int modValue = ints.Aggregate(1, (x,y) => x * y);

Функция агрегирования принимает начальное значение аккумулятора, а затем применяет операцию к каждому значению в перечислении, создавая новое значение аккумулятора.Здесь мы начинаем с 1, а затем умножаем любое значение на текущее значение аккумулятора.

Примечание. В случае пустого значения ints возвращается значение 1. Это может или не может быть правильным для вашей ситуации.

...