将所有值乘以IEnumerable <int>

Jon*_*Jon 27 .net c# linq .net-3.5 c#-3.0

我有以下代码,我试图找出如何将我的所有值相乘IEnumerable<int>.

我认为可能有一种乘法方法,就像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....
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 47

您正在寻找的是聚合功能

int modValue = ints.Aggregate(1, (x,y) => x * y);
Run Code Online (Sandbox Code Playgroud)

Aggregate函数接受初始累加器值,然后对枚举中的每个值应用操作,从而创建新的累加器值.这里我们从1开始,然后将ever值乘以累加器的当前值.

注意:如果ints值为空,则返回1.这可能适用于您的情况,也可能不正确.

  • 只是一个FYI,如果您使用浮点数而不是整数,您可能希望将"1"更改为"1.0"或将其转换为实际类型,否则您将收到编译器错误.事后看来显而易见,但我花了几分钟时间抓住它,并认为我会分享这个,希望能让其他人不得不这么做. (3认同)