using System.Collections;
using System.Collections.Generic;
using System.Data.DataSetExtensions;
public static void Main()
DataTable myDataTable = new DataTable();
myDataTable.Columns.Add("userId", typeof(int));
myDataTable.Columns.Add("createdTime", typeof(DateTime));
myDataTable.Rows.Add(new object[] {"1", DateTime.Now.Date.AddDays(2)});
myDataTable.Rows.Add(new object[] {"4", DateTime.Now.Date.AddDays(3)});
myDataTable.Rows.Add(new object[] {"4", DateTime.Now.Date.AddDays(3).AddMinutes(2)});
myDataTable.Rows.Add(new object[] {"4", DateTime.Now.Date.AddDays(3).AddMinutes(1)});
myDataTable.Rows.Add(new object[] {"1", DateTime.Now.Date.AddDays(2)});
myDataTable.Rows.Add(new object[] {"3", DateTime.Now.Date.AddDays(4)});
var users = myDataTable.AsEnumerable()
UserId = r.Field<int>("UserId"),
CreatedTime = r.Field<DateTime>("createdTime")
var groupedUsersResult = from user in users where user.CreatedTime > user.CreatedTime.AddDays(-7) group user by
new {user.CreatedTime.Year,user.CreatedTime.Month,user.CreatedTime.Day,Minute=(user.CreatedTime.Minute/5),user.UserId}
into groupedUsers select groupedUsers;
foreach(var groupedUser in groupedUsersResult)
Console.WriteLine(groupedUser.Key+ " "+ groupedUser.Count());