【发布时间】:2008-10-31 01:13:10
【问题描述】:
我正在学习 LINQ,并且有一个非常简单的问题,我认为这将有助于我更好地理解这项技术。如何找到整数数组的乘积?
例如,LINQ的做法是什么:
int[] vals = { 1, 3, 5 };
return vals[0] * vals[1] * vals[2];
【问题讨论】:
我正在学习 LINQ,并且有一个非常简单的问题,我认为这将有助于我更好地理解这项技术。如何找到整数数组的乘积?
例如,LINQ的做法是什么:
int[] vals = { 1, 3, 5 };
return vals[0] * vals[1] * vals[2];
【问题讨论】:
这可行:
var product = vals.Aggregate(1, (acc, val) => acc * val);
您从 1 的种子开始,然后使用两个参数为您的每个值调用该函数,acc 是当前累积值,val 是数组中的值;该函数将当前累加值乘以数组中的值,并将该表达式的结果作为acc 传递给下一个函数。即带有您提供的数组的函数调用链将是:
(1, 1) => 1
(1, 3) => 3
(3, 5) => 15
【讨论】:
Aggregate 将使用列表中的前两项。