1

我有一个表单列表,在此列表中,具有相同标题的表单表示该表单的不同版本,具有最接近创建时间(即DateTime类型)的表单是较新的版本。

所以我想使用实体框架代码选择最后 n 个版本的每个表单。我用过这个,但它仍然给我带来了第一个(最旧的)n 个版本。

List<Forms> dbResult = entities.Forms.OrderByDescending(e => e.CreationDate)
                                     .GroupBy(e => e.Title)
                                     .SelectMany(e => e.Take(n))
                                     .ToList();

我哪里错了?

4

1 回答 1

3

尝试这个:

var result = entities.Forms
            .GroupBy( x => x.Title )
            .SelectMany( g => g.OrderByDescending(v => v.CreationDate).Take(1) );

这将为您返回具有最大 CreationDate 的相同标题的表单。您可以进行额外的过滤以获取 n 个项目并以任何方式对它们进行排序。

于 2014-12-11T10:59:30.730 回答