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.