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
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)
};
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)
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With