当一个人开始一个项目时,我有一个看起来像这样的表格:
PersonId
ProjectId
StartDate
我想使用 linq (linq-to-entities) 来获得这样的结果集
PersonId
ProjectId
StartDate
EndDate
其中 EndDate 是他们下一个项目的开始日期(当按 StartDate 排序时),如果没有最近的项目,则为 null。
这就是我所做的:
context.PersonProjects.Select(pp => new {
pp.PersonId,
pp.ProjectId,
pp.StartDate,
EndDate = context.PersonProjects.Where(pp2 => pp2.PersonId == pp.PersonId && pp2.StartDate > pp.StartDate).OrderBy(pp2 => pp2.StartDate).Select(pp2 => pp2.StartDate).FirstOrDefault()
})
有没有更高效的方法来做到这一点?