“ Fold”はどこにありますかLINQ拡張メソッド?
-
22-07-2019 - |
質問
MSDNのLinqサンプルに適切なメソッドが見つかりました使用したい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);
詳細については、 MSDN をご覧ください。 seed
を指定してから、連続する値を計算する式を指定できます。
所属していません StackOverflow