remarks generate example c# average timespan

c# - generate - Encuentra el promedio de la colección de TimeSpans



params comments c# (3)

Tengo una colección de TimeSpans, representan el tiempo empleado en hacer una tarea. Ahora me gustaría encontrar el tiempo promedio dedicado a esa tarea. Debería ser fácil, pero por alguna razón no obtengo el promedio correcto.

Aquí está mi código:

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()); }


Además de la respuesta anterior, le sugiero que tome un promedio en el nivel de Segundos o MilliSegundos (dependiendo de lo que necesite)

sourceList.Average(timeSpan => timeSpan.ToTalMilliseconds)

Ahora usando este valor podrías llegar al nuevo TimeSpan usando

TimeSpan avg = TimeSpan.FromMilliseconds(double value here)


Puede usar la sobrecarga promedio que toma una colección de long en el parámetro.

double doubleAverageTicks = sourceList.Average(timeSpan => timeSpan.Ticks); long longAverageTicks = Convert.ToInt64(doubleAverageTicks); return new TimeSpan(longAverageTicks);


var average = new TimeSpan(sourceList.Select(ts => ts.Ticks).Average());

Tenga en cuenta que su método devuelve un valor Nullable , pero no es necesario, a menos que desee devolver el valor nulo si la lista de origen está vacía, en cuyo caso haga primero una comprobación por separado.