Linq get sum of data group by date
17,215
Solution 1
You should only take the year and month into account when grouping:
var result =
from s in meter_readings.Take(10)
group s by new { date = new DateTime(s.read_date.Year, s.read_date.Month, 1) } into g
select new
{
read_date = g.Key.date,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Solution 2
First, I think you can skip the anonymous type:
var result = from s in meter_readings.Take(10)
group s by s.read_date into g
select new
{
read_date = g.Key,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Second, to group by month, use some value that will uniquely identify the month, like this:
var result = from s in meter_readings.Take(10)
group s by s.read_date.ToString("yyyy.MM") into g
select new
{
read_month = g.Key,
T1 = g.Sum(x => x.T1),
T2 = g.Sum(x => x.T2)
};
Author by
AliRıza Adıyahşi
https://github.com/alirizaadiyahsi Contact : [email protected]
Updated on July 05, 2022Comments
-
AliRıza Adıyahşi almost 2 years
my data look like:
read_date | T1 | T2 | 15.02.2000 | 2 | 3 | 16.02.2000 | 4 | 5 | 15.03.2000 | 2 | 3 | 16.03.2000 | 5 | 4 |
I want to get mountly sum of T1 and T2, like this:
read_date | T1 | T2 | 02.2000 | 6 | 8 | 03.2000 | 7 | 7 |
I try to write something like this:
var result = from s in meter_readings.Take(10) group s by new { s.read_date} into g select new { read_date = g.Key.read_date, T1 = g.Sum(x => x.T1), T2 = g.Sum(x => x.T2) };
but this does not give expected data.Is there any example to give data hourly sums, daily sums, etc.
Thanks