查找List <tuple <date,double>&gt; </tuple <date,double>中的日期子集

时间:2012-10-01 17:07:35

标签: c#

在C#中,我有一个名为List<Tuple<DateTime,Double>>的时间序列。我正在尝试计算一些基本的统计数据(平均值和诸如此类)和时间序列中的日期子集。例如,我想计算平均值:

  • 一个月(即今天到1个月前)
  • 三个月
  • 六个月
  • 一年

我的想法是使用一个循环来完成上面的每一个并从时间序列中删除日期然后减少数据只是我感兴趣的元组。虽然这看起来效率很低......

有没有人对如何做到这一点有任何想法? LINQ会这样做吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我不明白为什么Linq不能这样做(虽然这并不意味着它是最好的方法)。这样的事情,在我的头顶,可能会起作用:

// Assign some tuple data to 'dataList'
List<Tuple<DateTime,Double>> dataList = SomeTupleData

// Filter all the rows to just the dates desired.
dataList
  .Where(row => row.Item1 >= startDate && row.Item1 <= endDate)
  .Average(row => row.Item2)

答案 1 :(得分:1)

这是一个月,同样是3或6个月:

var dataForOneMonth = dataList.Where(t => t.Item1 >= DateTime.Now.AddMonths(-1) 
                           && t.Item1 <= DateTime.Now);


 var sum = dataForOneMonth.Sum(t => t.Item2);
 var avg = dataForOneMonth.Average(t => t.Item2);