Получить элемент из IGrouping на основе наибольшей даты

В IEnumerable , который содержит встречи, определенные как:

class Appointment
{
  public string Name { get; set; }
  public DateTime LastModified { get; set; }
  public bool IsCancelled { get; set; }
}

, что на практике может выглядеть так:

"Jon S" | 25-02-2011 16:14:40 | true
"Jon S" | 25-04-2011 22:15:44 | false
"Marc G" | 15-11-2011 16:09:00 | true
"Marc G" | 21-12-2011 16:11:00 | false
"Marc G" | 20-12-2011 16:24:00 | true
"Eric L" | 13-06-2011 19:10:00 | false
"Reed C" | 13-04-2011 09:10:00 | true
"Reed C" | 13-06-2011 19:10:00 | false
"John G" | 04-01-2011 06:12:00 | true
"Jon S" | 25-03-2011 12:24:42 | true

Эта коллекция должна быть уменьшена до коллекции, которая содержит только встреч с самой высокой датой LastModified каждого отдельного Имени .

"Jon S" | 25-04-2011 22:15:44 | false
"Marc G" | 21-12-2011 16:11:00 | false
"Eric L" | 13-06-2011 19:10:00 | false
"Reed C" | 13-06-2011 19:10:00 | false
"John G" | 04-01-2011 06:12:00 | true

Я немного запутался, как это сделать. Когда я попытался:

 .GroupBy(n => n.Name)
 .Select(d => d.Max(t => t.LastModified));

Кажется, он показывает правильные даты, но нужна вся сущность, чего мне не хватает ?.

ОБНОВЛЕНИЕ / примечание: Это большая коллекция, содержащая около 10.000 неотсортированных элементов, доставленных службой Я не могу изменить . В каждой отдельной группе около 20 элементов.

6
задан Ivan Chaer 25 March 2017 в 17:17
поделиться