I have a list of users and their registration date. Now I want to group users by their registration date by 5-minute intervals, like this:
Group 1
15:01
15:03
15:04
Group 2
15:06
15:06
Group 3
15:17
Group 4
15:59
My question is: why this solution Is giving me right answer:
var users = GetUsers();
var interval = 5;
var registerInvervals = users.GroupBy(x => new
{
Month = x.Registered.Month,
Day = x.Registered.Day,
Hour = x.Registered.Hour,
MinuteFrom = (x.Registered.Minute/interval)*interval,
MinuteTo = (((x.Registered.Minute / interval) * interval) + 5)%61
})
.ToList();
but this not:
var users = GetUsers();
var interval = 5;
var registerInvervals = users.GroupBy(x => new GroupCriteria()
{
Month = x.Registered.Month,
Day = x.Registered.Day,
Hour = x.Registered.Hour,
MinuteFrom = (x.Registered.Minute/interval)*interval,
MinuteTo = (((x.Registered.Minute / interval) * interval) + 5)%61
})
.ToList();
class GroupCriteria
{
public int Month { get; set; }
public int Day { get; set; }
public int Hour { get; set; }
public int MinuteFrom { get; set; }
public int MinuteTo { get; set; }
}
The second solution returns 7 group with 1 user in each.