如何在选择所有行到内存之前使用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规则在内存中,我相信应该有另一种方式来做到这一点?我想在把它们都记在脑子里之前应用这两条规则,我怎么能做到呢?
您需要访问IQueryable
并执行以下LINQ:
dbContext.OrderByDescending(d => d.Id).Take(5).ToList();
这将把LINQ表达式转换成SQL,并且只从数据库中获取相关的行。ToList()
将执行查询并将这五个元素加载到内存中。