C# Entity Framework - 订购和获取

C# Entity Framework - Order by and Take

我正在尝试 select 我数据库中最旧的 5 个条目。我正在使用以下语句:

dbContext.Items.Take(5).OrderBy(i => i.LastCheck).ToListAsync(); 

这里的问题是 EF 首先从 table 中取出前 5 个项目,然后对它们进行排序。所以我总是从 table 中获取前 5 个条目。但我希望它首先对项目进行排序,然后 select 前 5 个,就像我执行此 sql 命令时一样:

select top 5 * from Items order by LastCheck asc

这里我得到了正确的结果。

是否可以在 EF 中执行此操作,还是我必须执行查询?

你必须切换 Take()OrderBy()

dbContext.Items.OrderBy(i => i.LastCheck).Take(5).ToListAsync(); 

认为上面已经回答了这个问题但是:-

dbContext.Items.OrderBy(x=>x.LastCheck).Take(5).ToListAsync();

先取,select 列表中的前 5 项,然后仅对这 5 项进行排序,而您想要做的是先按日期顺序对列表进行排序,然后取前 5 项5.

同样,如果您想按最新排序,上述查询(以确保它已排序)将变为:-

dbContext.Items.OrderByDescending(x=>x.LastCheck).Take(5).ToListAsync();

希望对您有所帮助!