It seems that you are mostly looking for Max - Min divided by Count.
public TimeSpan? Average { get { var diff = _dateTimes.Max().Subtract(_dateTimes.Min()); var avgTs = TimeSpan.FromMilliseconds(diff.TotalMilliseconds / (_dateTimes.Count() - 1)); return avgTs; } }
Make sure that you check that there is more than one time period.
Update: More precisely, if you use Ticks.
TimeSpan.FromTicks(diff.Ticks / (_dateTimes.Count() - 1));
source share