У меня есть таблица базы данных, которая содержит записи в течение времени начала и времени окончания события. Я хотел бы взять те записи и найти среднюю длину события. Вычитание не является никакой проблемой. Однако, когда я пытаюсь получить среднее значение, компилятор жалуется.
Вот мой текущий запрос LINQ:
public TimeSpan? getAverageTime()
{
return (from EventTime in db.EventTimes
where EventTime.EventTimesID > 0
select (EventTime.TimeEnd - EventTime.TimeStart)).Average();
}
Я также попробовал.Sum () и.Aggregate () так, чтобы у меня могло быть что-то для работы с, но ни один не принят.
Каков лучший метод для выполнения моей цели?
Похоже, вам нужно использовать SqlMethods.DateDiff в операторе linq2sql (функция DATEDIFF, если SQL):
public int getAverageTime()
{
return (from EventTime in db.EventTimes
where EventTime.EventTimesID > 0
select (SqlMethods.DateDiffMinute(EventTime.TimeStart, EventTime.TimeEnd)).Average();
}
Среднее значение
не работает со значениями TimeSpan
, которые получаются при вычитании двух значений DateTime
. Попробуйте усреднить (EventTime.TimeEnd - EventTime.TimeStart) .TotalMilliseconds
, а затем преобразовать это обратно в TimeSpan.