1

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

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

我的想法是使用循环遍历上述每一项并从时间序列中删除日期,然后将数据减少为我感兴趣的元组。不过,这似乎效率很低……

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

谢谢!

4

2 回答 2

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);
于 2012-10-01T17:15:09.367 回答
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)
于 2012-10-01T17:11:05.953 回答