使用实体框架从分组和有序列表中获取最后n个项目

时间:2014-12-11 09:38:44

标签: entity-framework linq-group

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

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

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

我哪里出错了?

1 个答案:

答案 0 :(得分:3)

试试这个:

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

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