hs2*_*s2d 49 c# timespan average
我收集了TimeSpans,它们代表了完成任务所花费的时间.现在我想找到在该任务上花费的平均时间.它应该很容易,但由于某种原因,我没有得到正确的平均值.
这是我的代码:
private TimeSpan? GetTimeSpanAverage(List<TimeSpan> sourceList)
{
TimeSpan total = default(TimeSpan);
var sortedDates = sourceList.OrderBy(x => x);
foreach (var dateTime in sortedDates)
{
total += dateTime;
}
return TimeSpan.FromMilliseconds(total.TotalMilliseconds/sortedDates.Count());
}
Run Code Online (Sandbox Code Playgroud)
vc *_* 74 92
您可以使用带有long参数集合的Average重载.
double doubleAverageTicks = sourceList.Average(timeSpan => timeSpan.Ticks);
long longAverageTicks = Convert.ToInt64(doubleAverageTicks);
return new TimeSpan(longAverageTicks);
Run Code Online (Sandbox Code Playgroud)
Geo*_*ett 11
var average = new TimeSpan(sourceList.Select(ts => ts.Ticks).Average());
Run Code Online (Sandbox Code Playgroud)
请注意,您的方法返回Nullable,但不需要,除非您想要在源列表为空时返回null,在这种情况下,首先执行单独的检查.