I have the following JSON result from API .
[
{
"ID": "1",
"Value" : "10",
"TimeStamp": "2019-10-21 00:00:00"
},
{
"ID": "1",
"Value": "10",
"TimeStamp": "2019-10-21 00:15:00"
},
{
"ID": "1",
"Value": "10",
"TimeStamp": "2019-10-21 00:30:00"
},
{
"ID": "1",
"ResultValue": "10",
"TimeStamp": "2019-10-21 00:45:00"
},
{
"ID": "1",
"Value": "20",
"TimeStamp": "2019-10-21 01:00:00"
},
{
"ID": "1",
"Value": "10",
"TimeStamp": "2019-10-21 01:15:00"
},
{
"ID": "1",
"Value": "10",
"TimeStamp": "2019-10-21 01:30:00"
},
{
"ID": "1",
"Value": "10",
"TimeStamp": "2019-10-21 01:45:00"
},
{
"ID": "1",
"Value": "30",
"TimeStamp": "2019-10-21 02:00:00"
}
]
I am trying to show the hourly aggregation using below LINQ query
var aggList = items.GroupBy(u => new { u.ID, u.TimeStamp.Date, u.TimeStamp.Hour })
.Select(g => new TestData
{
ID = g.Key.ID,
TimeStamp = g.Key.Date.AddHours(g.Key.Hour),
Value = g.Sum(k => k.Value)
}).ToList();
Which gives result as
ID : 1
TotalValue : 40
TimeStamp : 21.10.2019 00:00:00
ID : 1
TotalValue : 50
TimeStamp : 21.10.2019 01:00:00
What should be my LINQ query , If i want the hourly aggregation to consider from 15th minute instead of 0th minute .
Like first hour should have aggregation of
2019-10-21 00:15:00 - 10
2019-10-21 00:30:00 - 10
2019-10-21 00:45:00 - 10
2019-10-21 01:00:00 - 20
And the expected result should be
ID : 1
TotalValue : 50
TimeStamp : 21.10.2019 00:00:00
ID : 1
TotalValue : 60
TimeStamp : 21.10.2019 01:00:00