Created
May 17, 2014 02:39
-
-
Save hoganlong/1bad5892febf3f48b55f to your computer and use it in GitHub Desktop.
Full solution for stack overflow answer http://stackoverflow.com/a/23707052/215752
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void Main() | |
{ | |
List<CalendarEvent> events = new List<CalendarEvent>() | |
{ | |
new CalendarEvent("1", new DateTime(2014,1,1,1,1,1),new DateTime(2015,1,1,1,1,1),"one") | |
{ | |
EventTeamMembers = new List<TeamMember>() | |
{ | |
new TeamMember("sam spade","sam","sam"), | |
new TeamMember("hogan long","hogan","long"), | |
new TeamMember("gi joe","gi","joe"), | |
} | |
}, | |
new CalendarEvent("2", new DateTime(2014,2,2,2,2,2),new DateTime(2015,2,2,2,2,2),"two") | |
{ | |
EventTeamMembers = new List<TeamMember>() | |
{ | |
new TeamMember("sam spade","sam","sam"), | |
}, | |
}, | |
new CalendarEvent("3", new DateTime(2014,3,3,3,3,3),new DateTime(2015,3,3,3,3,3),"three") | |
{ | |
EventTeamMembers = new List<TeamMember>() | |
{ | |
new TeamMember("three three","three","thee"), | |
}, | |
}, | |
}; | |
var byMemberDate = events.SelectMany(e => e.EventTeamMembers.Select(m => new { evnt = e, member = m})) | |
.OrderBy(item => item.member.FullName) | |
.ThenBy(item => item.evnt.Start); | |
foreach(var item in byMemberDate) | |
Console.WriteLine("Member = "+item.member.FullName+" Date = "+item.evnt.Start); | |
} | |
// Define other methods and classes here | |
public class CalendarEvent | |
{ | |
#region Internal Fields | |
private readonly string _id; | |
private DateTime _start; | |
private DateTime _end; | |
private string _eventname; | |
private List<TeamMember> _eventteam; | |
#endregion | |
#region Const | |
public CalendarEvent(string id, DateTime start, DateTime end, string evtname) | |
{ | |
this._id = id; | |
this._start = start; | |
this._end = end; | |
this._eventname = evtname; | |
} | |
#endregion | |
#region Props | |
public string ID { get { return _id; } } | |
public DateTime Start { get { return _start; } } | |
public DateTime End { get { return _end; } } | |
public string EventName { get { return _eventname; } } | |
public List<TeamMember> EventTeamMembers { get; set; } | |
#endregion | |
} | |
public class TeamMember | |
{ | |
#region Internal Fields | |
private readonly string _firstname; | |
private readonly string _fullname; | |
private readonly string _userid; | |
// private TeamRoles.TeamMemberRole _memberrole; | |
//private string _resid; | |
#endregion | |
#region Const | |
public TeamMember(string fullname, string firstname, string userid) | |
{ | |
this._fullname = fullname; | |
this._firstname = firstname; | |
this._userid = userid; | |
//this._resid = resid; | |
} | |
#endregion | |
#region Props | |
public string FirstName { get { return _firstname; } } | |
public string FullName { get { return _fullname; } } | |
public string UserId { get { return _userid; } } | |
//public string SpeakerID { get { return _resid; } } | |
// public TeamRoles.TeamMemberRole TeamMemberRole { get; set; } | |
#endregion | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Note this example will run in LinqPad at LinqPad.net