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 的文档。

我在这里错过了什么??

Linq 跳过拍摄的问题

你的数据不是你想的那样。 问题是id=25中的created日期不按顺序排列。

您首先按created顺序对序列进行排序,那么为什么您希望输出按id排序(或基于选择)?

先执行Skip,然后执行OrderBy,会更改输出,因为它最初可能是按Id排序的,然后您获取序列中的最后几个,然后再次按日期排序。