here is another example data set, i want to go one more level down and group by username and EventTime, but i don't know how to expand the linq, plus i will have to remove the time stamp from the event dattime
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
List SignInReports = new List();
SignInReports.Add(new SignInReport { UserName = "Bob", EventName = "SignIn", EventTime = new DateTime(2020,1,18,6,0,0) });
SignInReports.Add(new SignInReport { UserName = "Bob", EventName = "SignOut", EventTime = new DateTime(2020, 1, 18, 10, 0, 0) });
SignInReports.Add(new SignInReport { UserName = "Bob", EventName = "SignIn", EventTime = new DateTime(2020, 1, 18, 11, 30, 0) });
SignInReports.Add(new SignInReport { UserName = "Bob", EventName = "SignOut", EventTime = new DateTime(2020, 1, 18, 16, 30, 0) });
SignInReports.Add(new SignInReport { UserName = "Charlie", EventName = "SignIn", EventTime = new DateTime(2020, 1, 18, 6, 0, 0) });
SignInReports.Add(new SignInReport { UserName = "Charlie", EventName = "SignOut", EventTime = new DateTime(2020, 1, 18, 15, 30, 0) });
SignInReports.Add(new SignInReport { UserName = "Charlie", EventName = "SignIn", EventTime = new DateTime(2020, 1, 19, 6, 30, 0) });
SignInReports.Add(new SignInReport { UserName = "Charlie", EventName = "SignOut", EventTime = new DateTime(2020, 1, 19, 17, 45, 0) });
IEnumerable SignInData = SignInReports.GroupBy(u => u.UserName)
.Select(group => new SignInReportGrouping { UserName = group.Key,
SignInReports = group.ToList() })
.ToList();
}
}
public class SignInReport
{
public string UserName { get; set; }
public string EventName { get; set; }
public DateTime EventTime { get; set; }
}
public class SignInReportGrouping
{
public string UserName { get; set; }
public IEnumerable SignInReportDay { get; set; }
}
public class SignInReportDay
{
public IEnumerable SignInReports { get; set; }
}
}