在 C# 中,我有一个List<Tuple<DateTime,Double>>
命名的时间序列。我正在尝试从时间序列中计算一些基本统计数据(平均值和诸如此类)和日期子集。例如,我想计算平均值:
- 一个月(即今天到 1 个月前)
- 三个月
- 六个月
- 一年
我的想法是使用循环遍历上述每一项并从时间序列中删除日期,然后将数据减少为我感兴趣的元组。不过,这似乎效率很低……
有人对我如何做到这一点有任何想法吗?LINQ会这样做吗?
谢谢!
在 C# 中,我有一个List<Tuple<DateTime,Double>>
命名的时间序列。我正在尝试从时间序列中计算一些基本统计数据(平均值和诸如此类)和日期子集。例如,我想计算平均值:
我的想法是使用循环遍历上述每一项并从时间序列中删除日期,然后将数据减少为我感兴趣的元组。不过,这似乎效率很低……
有人对我如何做到这一点有任何想法吗?LINQ会这样做吗?
谢谢!
这里是 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);
我不明白为什么 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)