如何将双打列表中的所有元素相乘?

Edw*_*rak 6 c# list

如何将a的内容相乘list <double>

List<double> mult=new List<double>{3, 5, 10};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

double r=0.0;
for(int i=0;i<mult.Count;i++)
{
    r=mult[i]*mult[(i+1)];
}
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 16

要修复循环,请从1.0列表中的每个项开始并相乘,如下所示:

double r = 1.0;
for(int i = 0; i < mult.Count; i++)
{
    r = r * mult[i]; // or equivalently r *= mult[i];
}
Run Code Online (Sandbox Code Playgroud)

但为简单起见,您可以使用一个带有Aggregate扩展方法的Linq :

double r = mult.Aggregate((a, x) => a * x);
Run Code Online (Sandbox Code Playgroud)

  • @EdwardKarak"Aggregate"方法从列表的第一个元素开始,并使用下一个元素中的前一个变换的结果将一些变换(在这种情况下,只是乘法)应用于每个后续元素.有关详细信息,请参阅文档. (2认同)
  • @EdwardKarak这是一个[lambda表达式](http://msdn.microsoft.com/en-us/library/vstudio/bb397687.aspx),也称为匿名函数.它创建了一个函数,它接受两个参数,一个'accumulator',`a`,以及序列中的下一个项目`x`,并返回它们的产品`a*x`.结果将传递回下一个项目的函数,依此类推,列表中的所有项目.最后,它将返回累加器. (2认同)