LINQ Средний срок? - PullRequest
       9

LINQ Средний срок?

5 голосов
/ 21 июня 2010

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

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 21 июня 2010

Кажется, что вы должны использовать 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();
    }
5 голосов
/ 21 июня 2010

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

0 голосов
/ 22 мая 2015
var avg=(from t in array select (t.endtime.Ticks-t-starttime.Ticks)).Average();
Console.Write(new DateTime((long)avg).TimeOfDay);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...