用LINQ(C#)实现分页?

时间:2012-07-12 05:17:07

标签: c# sql-server linq sql-server-2008 linq-to-sql

我是数据库应用程序的新手。

我想用更低的内存占用来实现分页。该应用程序已连接到MS SQL Server 2008 R2 DB。

我拥有的表包含数千条记录,应用程序可以使用给定的条件查询记录。

使用LINQ-SQL进行查询的当前实现和整个数据将返回给应用程序。如果查询返回太多结果,则可能耗尽进程内存。因此,我想将其作为页面实现。

我在网上遇到了一些可以对数据进行分页的存储过程。

我不确定标准分页是否可以帮助我满足以下要求

  • 减少内存占用,仅按需返回所需结果。
  • 保留查询状态。当用户在视图中看到数据时,可以更新相同的记录。因此,无论表的当前状态如何,都要保持结果的状态和数量,但与最后一个查询有关。
  • 如果LINQ用于实现分页,是否会加载进程以存储整个结果?

2 个答案:

答案 0 :(得分:5)

使用Linq分页不是问题,您可以使用Take()Skip()进行分页

var page = list.Skip((pageNo - 1) * pageSize)
               .Take(pageSize)

答案 1 :(得分:3)

网格视图控件具有以下功能:

  • Linq 2 SQL支持
  • 使用Linq 2 SQL自定义分页
  • 显示排序方向
  • 在寻呼机中下拉以调整页面中的记录数

LINQ TO SQL GridView (Enhanced Gridview)