使用WCF数据服务进行分页

时间:2011-12-14 11:14:52

标签: c# wcf linq pagination wcf-data-services

我的问题是如何使用WCF数据服务处理分页。我想要使​​用它的方式是执行查询(传递页面大小和当前页面),并获取该查询的结果以及页面信息,如总页数,当前页码和页面大小。客户端(这是另一种将结果转换为使用JSON的移动应用程序的服务)来处理下一个/上一个按钮。

但是,在WCF数据服务上使用LINQ太有限了,它不支持我需要的LINQ表达式。

我尝试在WCF 数据服务中创建服务操作,但我只能返回IQueryable数据实体集合,因此我无法返回同时包含分页信息的自定义实体。

有没有办法为WCF数据服务实现实现分页,这样我在结果旁边也可以获取分页信息?

编辑:由于WCF数据服务的限制,我切换到普通的WCF服务。说实话,我不明白为什么有人会想要使用这些严重限制的数据服务!

3 个答案:

答案 0 :(得分:3)

不幸的是,似乎WCF数据服务太有限了,我的解决方案是切换到常规WCF服务,这样我就可以使用完整的LINQ并自己定义数据合同。

答案 1 :(得分:2)

查看WCF数据服务的分页提供程序herehere

答案 2 :(得分:2)

使用SkipTake从WCF数据服务执行客户端数据分页,例如:

var items = (from i in ctx.MyEntities
             select i).Skip(StartIndex).Take(PageSize)

其中 StartIndex 是您要返回的数据的起始位置, PageSize 是要返回的最大元素数。