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();
希望对您有所帮助!
我正在尝试 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();
希望对您有所帮助!