C#实体框架 - 按顺序排序

时间:2016-04-26 14:49:00

标签: c# sql entity-framework select sql-order-by

我正在尝试从我的数据库中选择5个最旧的条目。我使用以下声明:

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

这里的问题是EF首先从表中获取前5个项目,然后对它们进行排序。所以我总是从表中得到5个第一个条目。但是我想首先对项目进行排序,然后选择前5项,就像我执行这个sql命令一样:

select top 5 * from Items order by LastCheck asc

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

是否有可能在EF中执行此操作或是否必须执行查询?

2 个答案:

答案 0 :(得分:4)

您必须切换Take()OrderBy()

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

答案 1 :(得分:0)

认为这已经在上面得到了回答,但是: -

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

首先执行操作,将从列表中选择前5项,然后对这5项进行排序,而您要执行的操作是先将列表排序为日期顺序,然后排在前5位。

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

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

希望这有帮助!