2008-10-31 19 views
12

Estoy aprendiendo LINQ y tengo una pregunta muy simple que creo que me ayudará a comprender mejor la tecnología. ¿Cómo puedo encontrar el producto de una matriz de enteros?Calcular producto con LINQ

Por ejemplo, ¿cuál es la forma de hacer LINQ:

int[] vals = { 1, 3, 5 }; 
return vals[0] * vals[1] * vals[2]; 

Respuesta

28

Esto funcionaría:

var product = vals.Aggregate(1, (acc, val) => acc * val); 

Estás empezando con una semilla de 1 y entonces la función se llama para cada de sus valores con dos argumentos, acc que es el valor acumulado actual, y val que es el valor en la matriz; la función multiplica el valor acumulado actual por el valor en la matriz y el resultado de esa expresión se pasa como acc a la siguiente función. es decir, la cadena de llamadas de función con la matriz que proporcionó será:

(1, 1) => 1 
(1, 3) => 3 
(3, 5) => 15 
+0

+1. recomendamos usar int en lugar de var. –

+2

El uso de var es una decisión personal/de equipo. Personalmente, no creo que la información de tipo sea tremendamente útil y te distrae del * propósito * del código. Escribí sobre esto aquí: http://gregbeech.com/blogs/tech/archive/2008/03/24/to-var-or-not-to-var-implicit-typing-is-the-question.aspx –

+0

Entonces así es como funciona Aggregate. Esto parece increíblemente útil, no puedo creer que no haya aprendido a hacer esto antes. –

Cuestiones relacionadas