Tempo médio do LINQ?

Eu tenho uma tabela de database que contém inputs para hora de início e hora de término de um evento. Eu gostaria de pegar essas inputs e encontrar a duração média de um evento. A subtração não é problema. No entanto, quando tento obter o valor médio, o compilador reclama.

Aqui está minha consulta LINQ atual:

public TimeSpan? getAverageTime() { return (from EventTime in db.EventTimes where EventTime.EventTimesID > 0 select (EventTime.TimeEnd - EventTime.TimeStart)).Average(); } 

Eu também tentei .Sum () e .Aggregate () para que eu pudesse ter algo para trabalhar, mas nenhum deles é aceito.

Qual é o melhor método para realizar meu objective?

Parece que você tem que usar um SqlMethods.DateDiff na instrução linq2sql (function DATEDIFF se SQL):

 public int getAverageTime() { return (from EventTime in db.EventTimes where EventTime.EventTimesID > 0 select (SqlMethods.DateDiffMinute(EventTime.TimeStart, EventTime.TimeEnd)).Average(); } 

Average não funciona com valores de TimeSpan , que são o que você obtém quando subtrai dois valores de DateTime . Tente a média (EventTime.TimeEnd - EventTime.TimeStart).TotalMilliseconds seguida, convertendo isso de volta para um TimeSpan depois.

 var avg=(from t in array select (t.endtime.Ticks-t-starttime.Ticks)).Average(); Console.Write(new DateTime((long)avg).TimeOfDay);