我有一個大的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') –