method how extension extended ejemplos custom create c# linq extension-methods reduce

c# - how - ¿Dónde está el Método de extensión LINQ "Fold"?



extended methods c# (2)

Encontré en las muestras de Linq de MSDN un método limpio llamado Fold () que quiero usar. Su ejemplo:

double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; double product = doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor);

Desafortunadamente, no puedo hacer que compile, ya sea en su ejemplo o en mi propio código, y no puedo encontrar en ningún otro lugar en MSDN (como métodos de extensión Enumerable o Array) que mencionen este método. El error que recibo es un viejo y simple error "no sé nada sobre eso":

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?)

Estoy usando otros métodos que creo que vienen de Linq (como Select () y Where ()), y estoy "usando System.Linq", así que creo que todo está bien.

¿Este método realmente existe en C # 3.5 y, de ser así, qué estoy haciendo mal?


Querrá utilizar el método de extensión Aggregate :

double product = doubles.Aggregate(1.0, (prod, next) => prod * next);

Ver MSDN para más información. Le permite especificar una seed y luego una expresión para calcular valores sucesivos.


Fold (aka Reducir) es el término estándar de la programación funcional. Por alguna razón, recibió el nombre MSDN en LINQ.

double product = doubles.Aggregate(1.0, (runningProduct, nextFactor) => runningProduct* nextFactor);