Select 在dataobjects.net中为每个页面选择记录

Select 在dataobjects.net中为每个页面选择记录,select,dataobjects.net,Select,Dataobjects.net,我在数据库中有很多记录,我有一个控件可以分页这些记录。如何为每页选择记录?例如,我需要选择从第51条记录到第100条记录的记录。我不能使用LINQ表达式。我使用的是dataobjects 3.9。 所以我从 Query q = new Query("select SomeClass objects"); 使用此查询: Query q = new Query("select top 100 SomeClass objects"); 就我所记得的,在DO39的情况下,没有办法指定类似于.Skip

我在数据库中有很多记录,我有一个控件可以分页这些记录。如何为每页选择记录?例如,我需要选择从第51条记录到第100条记录的记录。我不能使用LINQ表达式。我使用的是dataobjects 3.9。 所以我从

Query q = new Query("select SomeClass objects");
使用此查询:

Query q = new Query("select top 100 SomeClass objects");
就我所记得的,在DO39的情况下,没有办法指定类似于
.Skip
-的条件,因此您应该手动执行此操作(例如,通过将
.Skip
应用到您得到的可枚举项)

在这种情况下会对性能产生明显的影响,但就计算复杂性而言,这并不是必需的。这样做的唯一效果是,SQL Server将向客户端发送更多的行,但它必须执行的所有其他作业都保持不变

举例说明这一点:

如果你让谷歌给你看第1000页的搜索结果,它无论如何都会给你看 查找与查询相关的所有文档,计算匹配等级 对每个页面进行排序,以获得至少前1000页的最佳页面 匹配等级,只有完成所有这项工作后,它才能给你机会 第1000页

因此,如果有10000000000个文档,计算 相比之下,向客户端发送10K行的复杂性很小 其他工作都做完了

还要注意,分页的整个思想是显示整个数据集的一小部分。因此,如果您的用户需要分页到例如第1000页,则说明设计有问题。只有两种情况:

  • 用户必须获得一小部分数据(即执行一些搜索)
  • 用户必须获取所有数据(例如,进行备份)
没有中间案例