【发布时间】:2012-06-26 07:46:36
【问题描述】:
我是使用 Azure 表存储的新手,但我能够将下面的代码组合在一起,成功地允许我的查询接受用户指定的 filterQuery(字符串)——例如:(金额 le 5000.00)——并检索符合条件的所有行(实体)。
Dim sBuilder As New System.Text.StringBuilder
Dim query = MyBase.CreateQuery(Of cData)("CustomerData")
Dim userQuery = String.Format("(PartitionKey eq '{0}' and {1})", AppID, filterQuery)
sBuilder.AppendFormat(userQuery)
query = query.AddQueryOption("$filter", sBuilder.ToString).AsTableServiceQuery().Take(50)
Dim results As List(Of cData) = query.Execute.ToList
我应该指出,这种允许用户指定过滤器字符串的方式对我来说是关键,因为我使用的是一个内部有字典的泛型类,以便允许我的调用者传入任意数量的元素存储到给定的实体中。因此,此解决方案允许用户驱动他希望他的查询如何搜索,而我的代码不必“知道”任何关于他的自定义字段的信息。
现在我需要添加分页。我的理解是,我使用的“执行”方法会为您处理分页,因此如果有 7,000 条符合条件的记录,我的代码将一直等待,直到所有条目都被检索/返回。但是,我希望允许我的用户指定他希望一次返回多少个实体(最大结果),然后允许他使用延续令牌进行后续调用以获取下一批匹配实体。
关于如何在不失去允许用户在简单字符串中指定其搜索条件的能力的情况下实现这一点的任何想法?
【问题讨论】:
标签: azure pagination azure-storage azure-table-storage