针对Azure表存储的同步分页

针对Azure表存储的同步分页,azure,pagination,azure-storage,azure-table-storage,Azure,Pagination,Azure Storage,Azure Table Storage,我不熟悉Azure表存储,但我已经能够整合下面的代码,使我的查询能够接受用户指定的filterQuery(string)——例如:(Amount le 5000.00)——并检索与条件匹配的所有行(实体) Dim sBuilder作为新System.Text.StringBuilder Dim query=MyBase.CreateQuery(属于cData)(“CustomerData”) Dim userQuery=String.Format(((分区键eq'{0}'和{1})”,AppID

我不熟悉Azure表存储,但我已经能够整合下面的代码,使我的查询能够接受用户指定的filterQuery(string)——例如:(Amount le 5000.00)——并检索与条件匹配的所有行(实体)

Dim sBuilder作为新System.Text.StringBuilder
Dim query=MyBase.CreateQuery(属于cData)(“CustomerData”)
Dim userQuery=String.Format(((分区键eq'{0}'和{1})”,AppID,filterQuery)
sBuilder.AppendFormat(userQuery)
query=query.AddQueryOption(“$filter”,sBuilder.ToString).AsTableServiceQuery().Take(50)
将结果显示为列表(cData)=query.Execute.ToList
我应该指出,这种允许用户指定过滤器字符串的方式对我来说很关键,因为我使用的泛型类中有一个字典,以便允许我的调用者传入任意数量的元素以存储到给定的实体中。因此,此解决方案允许用户驱动他希望查询的搜索方式,而我的代码不必“知道”任何有关其自定义字段的信息

现在我需要添加分页。我的理解是,我正在使用的“Execute”方法为您处理分页,因此,如果有7000条记录符合条件,我的代码将一直保存到检索/返回所有条目为止。但是,我想让我的用户指定一次返回多少个实体(最大结果),然后允许他使用延续令牌进行后续调用,以获得下一批匹配实体


有没有想过如何在不失去允许用户在简单字符串中指定其搜索条件的能力的情况下实现这一点?

我认为您可以只执行query.EndExecuteSegmented(query.BeginExecuteSegmented(…)


查看SmarxToDo的代码:

您可能希望使用RESTAPI()实现查询。您将从存储服务返回XML响应,您可以解析该响应以创建对象集合。

smarx,谢谢。您的建议只处理了我的部分问题(分页问题)。但是,我不知道如何增强它,以仍然支持用户将其搜索条件指定为字符串的能力(例如:“Amount le 500.00和IsPet eq True).正如我所提到的,用户存储在其实体中的数据由他决定,我没有一个真正代表其实体的类,因此我需要此过滤器的灵活性。是否有原因必须更改该部分?