使用WCF数据服务进行分页

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

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

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

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

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

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

在这里和这里查看WCF数据服务的分页提供程序

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

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

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