Encontré en las muestras de Linq de MSDN un método ordenado 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 compilar esto, ya sea en su ejemplo o en mi propio código, y no puedo encontrar en ningún otro lugar de MSDN (como los métodos de extensión Enumerable o Array) que mencionen este método. El error que recibo es un simple y antiguo 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 provienen de Linq (como Select () y Where ()), y estoy "usando System.Linq", así que creo que todo está bien.
¿Existe realmente este método en C # 3.5? Si es así, ¿qué estoy haciendo mal?
c#
linq
extension-methods
reduce
Conocido
fuente
fuente

Respuestas:
Querrá utilizar el
Aggregatemétodo de extensión:Consulte MSDN para obtener más información. Le permite especificar una
seedexpresión y luego una para calcular valores sucesivos.fuente
Funcsolo se llama una vez que se alcanza el segundo elemento. Ver: msdn.microsoft.com/en-us/library/vstudio/…ToString(), así devolver una representación de texto de todo el contenedor.<double>compilador infiere automáticamente el parámetro de tipo y, por lo tanto, no es necesario.pyelempuede ser del tipo que desee. Vea esta sobrecarga como se usa en este ejemploFold (también conocido como Reducir) es el término estándar de la programación funcional. Por el motivo que sea, recibió el nombre Aggregate en LINQ.
fuente