问题描述
如题,在C#/.NET应用程序编程开发中LINQ查询如何实现一个集合的分页?
在SQL Server数据库中可以使用TOP
函数或者OFFSET
函数实现分页,在MySQL数据库中,可以使用LIMIT n,m
。但在C#/.NET的应用程序编程开发中,有时候可能会需要使用LINQ对一个数据集合(列表)进行分页,应该如何实现呢?
方案一
在C#中,内置了很多LINQ的静态扩展方法,对于对集合进行分页,我们可以使用Skip
和Take
这两个静态扩展名方法。这两个扩展方法均带有一个参数。
其中:
Skip
表示跳过结果中的前N个元素,返回剩余的元素;Take
表示返回结果中的前N个元素。
那么,具体的分页实现代码可以类似如下:
方案二
为了代码的复用,我们还可以将LINQ的分页封装成一个通用的静态扩展方法,如下:
该类定义了两种扩展方法:一种用于IEnumerable
,另一种用于IQueryable
,你可以将它用于LINQ to Objects
和 LINQ to SQL
。使用示例如下:
方案三
不使用Skip
和Take
扩展方法实现的迭代方法,如下:
调用示例:
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册