我有一个大的15分钟值的大名单,我想将它们汇总到几个小时。我这样做非常简单的方法:总价值需要很长时间
for (; from <= to; from = from.AddHours(1))
{
List<DataPoint> valuesToAgregate = data.Where(x => x.TimeStamp >= from && x.TimeStamp < from.AddHours(1)).ToList();
dailyInputData.Add(valuesToAgregate.Sum(x=>x.Val));
}
这样,它需要大量的时间,像值的35K 30秒有没有什么办法来优化呢?也许使用排序功能或一些如何添加索引列表或使用分组而不是for循环?
你真的需要临时'List'实例吗? –
它有很大的不同吗?这是简化逻辑,我将这个列表传递给其他方法。但问题是data.Where(x => x.TimeStamp> = from && x.TimeStamp
kosnkov
@kosnkov这使得区别,你正在每个循环中创建一个数组。不仅如此,你正在循环两次序列(一个用'ToList'另一个用'Sum') –