Skip to content

Instantly share code, notes, and snippets.

@hoganlong
Created May 17, 2014 02:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hoganlong/1bad5892febf3f48b55f to your computer and use it in GitHub Desktop.
Save hoganlong/1bad5892febf3f48b55f to your computer and use it in GitHub Desktop.
Full solution for stack overflow answer http://stackoverflow.com/a/23707052/215752
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
}
@hoganlong
Copy link
Author

Note this example will run in LinqPad at LinqPad.net

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment