我有问题。我需要从数据库记录中选择具有列表 externalIds 中 id 的人员。之后,我只需要为每个人选择 1 条具有最新 StartTime 的记录。例如,我尝试使用 SetProjection(GroupProperty 和 Max 属性),但结果是当我需要 PersonnelPresence 列表时,它只返回 StartTime 列表。我的方法看起来像:
public IList<PersonnelPresence> GetLastPersonnelPresencesForPeopleExternalIds(IList<string> externalIds)
{
ICriteria criteria = Session.CreateCriteria(typeof(PersonnelPresence), "pp").CreateCriteria("pp.Person", "p")
.Add(Restrictions.In("p.ExternalId", externalIds.ToList()))
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty("p.Id"))
.Add(Projections.Max("pp.StartTime")));
return criteria.List<Object>() as List<PersonnelPresence>;
}
有谁知道如何解决我的问题?提前致谢。