如何在选择所有行到内存之前使用EF排序和SelectTop5

本文关键字:EF 排序 SelectTop5 内存 选择 | 更新日期: 2023-09-27 18:18:10

我试图选择前5行和按Id列排序降序,而不将所有行放入内存。

我代码:

IList<Article> articles = _articleRepository.GetList(d => d.CategoryId == cat.Id)
                                            .OrderByDescending(d=>d.Id).ToList();

我知道这首先得到所有行内存和应用顺序和Top5规则在内存中,我相信应该有另一种方式来做到这一点?我想在把它们都记在脑子里之前应用这两条规则,我怎么能做到呢?

如何在选择所有行到内存之前使用EF排序和SelectTop5

您需要访问IQueryable并执行以下LINQ:

dbContext.OrderByDescending(d => d.Id).Take(5).ToList();

这将把LINQ表达式转换成SQL,并且只从数据库中获取相关的行。ToList()将执行查询并将这五个元素加载到内存中。