我发现在MSDN 的 Linq 示例 http://msdn.microsoft.com/en-us/vcsharp/aa336747.aspx#foldSimple我想使用一个名为 Fold() 的简洁方法。他们的例子:
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
double product =
doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);
不幸的是,无论是在他们的示例中还是在我自己的代码中,我都无法编译此方法,而且我在 MSDN 中找不到任何其他地方(例如 Enumerable 或 Array 扩展方法)提到此方法。我得到的错误是一个普通的旧“对此一无所知”错误:
error CS1061: 'System.Array' does not contain a definition for 'Fold' and no
extension method 'Fold' accepting a first argument of type 'System.Array' could
be found (are you missing a using directive or an assembly reference?)
我正在使用其他我认为来自 Linq 的方法(例如 Select() 和Where()),并且我正在“使用 System.Linq”,所以我认为这一切都可以。
这个方法真的存在于 C# 3.5 中吗?如果是的话,我做错了什么?
您将想要使用Aggregate
扩展方法:
double product = doubles.Aggregate(1.0, (prod, next) => prod * next);
See MSDN http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aggregate.aspx了解更多信息。它可以让你指定一个seed
然后是计算连续值的表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)