¿Alguien puede decirme cuál es el código correcto de Plinq para esto? Estoy sumando la raíz cuadrada del valor absoluto del seno de cada elemento para una matriz doble, pero el Plinq me está dando el resultado incorrecto.Plinq ofrece diferentes resultados de Linq: ¿qué estoy haciendo mal?
salida de este programa es:
LINQ agregada = 75,8310477905274 (correcto) PLINQ agregada = 38,0263653589291 (aproximadamente la mitad de lo que debería ser)
debo estar haciendo algo mal, pero no puedo trabajar en lo ...
(me estoy quedando esta con Visual Studio 2008 en un Core 2 Duo Windows 7 x64 PC.)
Aquí está el código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
double[] array = new double[100];
for (int i = 0; i < array.Length; ++i)
{
array[i] = i;
}
double sum1 = array.Aggregate((total, current) => total + Math.Sqrt(Math.Abs(Math.Sin(current))));
Console.WriteLine("Linq aggregate = " + sum1);
IParallelEnumerable<double> parray = array.AsParallel<double>();
double sum2 = parray.Aggregate((total, current) => total + Math.Sqrt(Math.Abs(Math.Sin(current))));
Console.WriteLine("Plinq aggregate = " + sum2);
}
}
}