Среднее число LINQ TimeSpan?

У меня есть таблица базы данных, которая содержит записи в течение времени начала и времени окончания события. Я хотел бы взять те записи и найти среднюю длину события. Вычитание не является никакой проблемой. Однако, когда я пытаюсь получить среднее значение, компилятор жалуется.

Вот мой текущий запрос LINQ:

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

Я также попробовал.Sum () и.Aggregate () так, чтобы у меня могло быть что-то для работы с, но ни один не принят.

Каков лучший метод для выполнения моей цели?

5
задан Jacob Huggart 21 June 2010 в 15:42
поделиться

2 ответа

Похоже, вам нужно использовать 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();
    }
7
ответ дан 13 December 2019 в 22:01
поделиться

Среднее значение не работает со значениями TimeSpan , которые получаются при вычитании двух значений DateTime . Попробуйте усреднить (EventTime.TimeEnd - EventTime.TimeStart) .TotalMilliseconds , а затем преобразовать это обратно в TimeSpan.

5
ответ дан 13 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: