假设我有一个>,PageHit具有以下属性:List
<PageHit
和DateTime RequestTime
。
最终,我想要做的是将每个RequestTime值四舍五入到最接近的30分钟增量(使用How can I round up the time to the nearest X minutes?),将它们分组在一起,并获得该增量块的PageResponseTime的总体平均值(现实世界中的用户故事:跟踪每30分钟的平均页面响应时间)。
据我所知,但是我的大脑不会立即向我展示如何有效地获得每个增量的平均值,而不会出现总循环。在步骤1中有没有办法做到这一点?// Step 1: round all request times up
pageHitList.ForEach(x => x.RequestTime = x.RequestTime.RoundUp(TimeSpan.FromMinutes(30));
// Step 2: Get the average of each increment block
?
最佳答案
还没有测试过,但这就是我要做的:
var avg = pageHitList.GroupBy(x => x.RequestTime.RoundUp(TimeSpan.FromMinutes(30)));
.Select(hit => new {
hit.Key,
Average = hit.Average(x => x.PageResponseTime)
});