using System.Collections.Generic;
public static void Main()
List<Match> matchList = new List<Match>();
var messageOrel = new List<MatchMessage>
new MatchMessage { SentDate = "01/12/2016" },
new MatchMessage { SentDate = "01/11/2016" },
new MatchMessage { SentDate = "01/20/2016" },
var messageTom = new List<MatchMessage>
new MatchMessage { SentDate = "01/30/2016" },
var messageJordan = new List<MatchMessage>
new MatchMessage { SentDate = "01/01/2015" },
new MatchMessage { SentDate = "01/05/2015" },
var messageBill = new List<MatchMessage>
matchList.Add(new Match { Name = "Orel", Messages = messageOrel });
matchList.Add(new Match { Name = "Tom", Messages = messageTom });
matchList.Add(new Match { Name = "Jordan", Messages = messageJordan });
matchList.Add(new Match { Name = "Bill", Messages = messageBill });
var newList = matchList.OrderBy(match => match.Messages.Any() ? match.Messages.Max(x => DateTime.Parse(x.SentDate)) : DateTime.MaxValue);
foreach (var match in newList)
Console.WriteLine(match.Name);
public string Name { get; set; }
public List<MatchMessage> Messages { get; set; }
public class MatchMessage
public string SentDate { get; set; }