How can I average the DateTime field with a LINQ query?

I have a database that has the following entries in the DateTime field:

2012-04-13 08:31:00.000
2012-04-12 07:53:00.000
2012-04-11 07:59:00.000
2012-04-10 08:16:00.000
2012-04-09 15:11:00.000
2012-04-08 08:28:00.000
2012-04-06 08:26:00.000

I want to run a linq to sql query to get the average time from the records above. I tried the following:

(From o In MYDATA Select o.SleepTo).Average()

Since "SleepTo" is a datetime field, I get an error in Average (). If I were trying to get the average value of an integer, then the above linq query works.

What do I need to do to make it work in datetimes?

+5
source share
3 answers

DateTime . Ticks DateTime " 100- , 12:00 , 1 0001 ". (. http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx)

DateTimes , , datetime.

var averageTicks = (long) dates.Select(d => d.Ticks).Average();
var averageDate = new DateTime(averageTicks);

, :

var averageTicks = (long)(from o in MYDATA select o.SleepTo.Ticks).Average();
var averageDate = new DateTime(averageTicks);

SleepTo ( Date), :

var averageTicks = (long)(from o in MYDATA select o.SleepTo.TimeOfDay.Ticks).Average();
var averageTime = new TimeSpan(averageTicks);
+8

, ... , DateTimes , LINQ (long vars) .

    public static long Average(this IEnumerable<long> longs)
    {
        long count = longs.Count();
        long mean = 0;
        foreach (var val in longs)
        {
            mean += val / count;
        }
        return mean;
    }

    public static DateTime Average(this IEnumerable<DateTime> dates)
    {
        return new DateTime(dates.Select(x => x.Ticks).Average());
    }
+4

LINQ , , , . , , ( - , - ?).

, :

(From o In MYDATA Select o.SleepTo).Sum()

.Average().

, , SleepTo, TimeSpan (, ) . SleepFrom?

, : LINQ Average TimeSpan?

+1

All Articles