使用LINQ计算产品

Jus*_* R. 14 c# linq

我正在学习LINQ并且有一个非常简单的问题,我认为这将有助于我更好地理解技术.如何找到一组int的产品?

例如,LINQ的方法是什么:

int[] vals = { 1, 3, 5 };
return vals[0] * vals[1] * vals[2];
Run Code Online (Sandbox Code Playgroud)

Gre*_*ech 31

这可行:

var product = vals.Aggregate(1, (acc, val) => acc * val);
Run Code Online (Sandbox Code Playgroud)

你从一个种子开始,1然后用两个参数为你的每个值调用函数,acc这两个参数是当前的累积值,val它是数组中的值; 该函数将当前累计值乘以数组中的值,并将该表达式的结果传递acc给下一个函数.即,您提供的数组的函数调用链将是:

(1, 1) => 1
(1, 3) => 3
(3, 5) => 15
Run Code Online (Sandbox Code Playgroud)

  • 我认为你不需要种子.如果没有提供种子,`Aggregate`将使用列表中的前两项. (4认同)
  • @Juan无种子版本将为空源https引用异常https://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,ff1369203d6036a4 (3认同)
  • 使用var是个人/团队的决定.就个人而言,我不认为类型信息非常有用,并且会分散您对代码的*目的*的注意力.我在这里写了这篇文章:http://gregbeech.com/blogs/tech/archive/2008/03/24/to-var-or-not-to-var-implicit-typing-is-the-question.aspx (2认同)