Linq 跳过拍摄的问题
本文关键字:问题 Linq | 更新日期: 2023-09-27 18:37:19
我有这个代码。
var documents = from d in db.Documents select d;
documents = documents.OrderBy(d => d.Created);
documents = documents.Skip(20).Take(10);
在 db 中,我有 25 个文档(ID 从 1 到 25)。当我运行此代码时,我获取从 id 19 到 24 的文档。
如果我这样写
documents = documents.Skip(20);
或者像这样
documents = documents.Skip(20).ToList().Take(10).AsQueryable();
我得到从 id 20 到 25 的文档。
我在这里错过了什么??
你的数据不是你想的那样。 问题是id=25
中的created
日期不按顺序排列。
您首先按created
顺序对序列进行排序,那么为什么您希望输出按id
排序(或基于选择)?
先执行Skip
,然后执行OrderBy
,会更改输出,因为它最初可能是按Id
排序的,然后您获取序列中的最后几个,然后再次按日期排序。