¿Dónde está el & # 8220; Doblar & # 8221; Método de extensión LINQ?
-
22-07-2019 - |
Pregunta
Encontré en muestras Linq de MSDN un método ordenado llamado Doblar () 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 esto se compile, ya sea en su ejemplo o en mi propio código, y no puedo encontrar ningún otro lugar en MSDN (como los métodos de extensión Enumerable o Array) que mencionan este método. El error que recibo es un viejo "no sé nada de eso" error:
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 provienen 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 si es así, qué estoy haciendo mal?
Solución
Deberá utilizar el método de extensión Aggregate
:
double product = doubles.Aggregate(1.0, (prod, next) => prod * next);
Consulte MSDN para obtener más información. Le permite especificar una semilla
y luego una expresión para calcular valores sucesivos.