设说值,我们有两个数组:LINQ - 选择从阵列元件A根据在阵列乙
DateTime[] wDates = new DateTime[20000];
double[] wValues = new double[20000];
这两个阵列被两个顺序排列,即给定一个int I,wValues [I]是日期wDates [i]。
我们可以说,我们需要得到wValues的平均值,其中日期的月份是使用标准的环月
这将是:
double wAvg = 0.0;
int wDataCount = 0;
for (int i=0; i < 20000; i++)
if (wDates[i].Month == 1)
{
wAvg += wValues[i];
wDataCount++;
}
if (wDataCount > 0)
wAvg /= wDataCount;
我想知道如何做到这一点在LINQ中? 我可以创建一个struct /类DateDouble包含两个值,然后做一些事情,如:
List<DateDouble> wListData = new List<DateDouble>();
Add the items...
double wAvg = (from d in wListData
where d.Date.Month == 1
select d.Value).Average();
,但每天做几千万的时候创造了数千个DateDouble对象将是一个很大的内存开销。临时对象也会发生同样的情况,并尝试使用'索引',并加入数组中的索引会产生可怕的表现。
在LINQ中有更好的方法来实现这个吗?
感谢, MM
谢谢。这是一个非常优雅的解决方案! –