根据最高日期从IGrouping中获取项目

Cas*_*jne 6 c# linq lambda

IEnumerable<Appointment>包含约定定义为:

class Appointment
{
  public string Name { get; set; }
  public DateTime LastModified { get; set; }
  public bool IsCancelled { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在实践中可以像:

"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
Run Code Online (Sandbox Code Playgroud)

此集合必须缩小为仅包含具有每个不同名称最高日期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
Run Code Online (Sandbox Code Playgroud)

我有点困惑如何做到这一点.当我尝试:

 .GroupBy(n => n.Name)
 .Select(d => d.Max(t => t.LastModified));
Run Code Online (Sandbox Code Playgroud)

它似乎提供了正确的日期,但需要整个实体,我缺少什么?

更新/注意:这是一个大型集合,包含大约10.000个未分类的项目,由我无法修改的服务提供.每个不同的组有大约20个元素.

BFr*_*ree 5

.GroupBy(n => n.Name)
.Select(d => d.OrderByDescending(t => t.LastModified).First())
Run Code Online (Sandbox Code Playgroud)