Wo ist die „Fold“ LINQ Erweiterungsmethode?
-
22-07-2019 - |
Frage
Ich fand in MSDN Linq Proben eine saubere Methode aufgerufen falten (), die ich verwenden möchte. Ihr Beispiel:
double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
double product =
doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);
Leider kann ich nicht bekommen diese, zu kompilieren, entweder in ihrem Beispiel oder in meinem eigenen Code, und ich kann nirgendwo anders in MSDN (wie Enumerable oder Array-Erweiterungsmethoden), die nennen diese Methode finden. Der Fehler, den ich bekommen, ist eine gute alte Fehler „nichts über das wissen“:
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?)
Ich bin mit anderen Methoden, die ich von Linq kommen glaube (wie Select () und wo ()), und ich bin „mit System.Linq“, so dass ich denke, das ist alles in Ordnung.
Ist diese Methode gibt es in C # 3.5 wirklich, und wenn ja, was mache ich falsch?
Lösung
Sie wollen die Aggregate
Erweiterungsmethode verwenden:
double product = doubles.Aggregate(1.0, (prod, next) => prod * next);
Siehe MSDN für weitere Informationen. Damit können Sie eine seed
angeben und dann einen Ausdruck aufeinanderfolgende Werte zu berechnen.