Public ReadOnly Property logs() As CloudTableQuery(Of adlog)
Get
Return CreateQuery(Of adlog)("adlog").AsTableServiceQuery()
End Get
End Property
我有以下代码
Dim oContext = New kdlib.kdlogs.adlog_context()
Dim q = From adlogs In oContext.logs Where adlogs.PartitionKey = "xxxxxx"
只会带回1000行
如果我在某处读到.Execute()
:
Dim q = From adlogs In oContext.logs.Execute() Where adlogs.PartitionKey = "xxxxxx"
请求永远不会结束
我真的不明白。
基于以下成功回答的编辑
现在可以使用了
Dim azt_context As New tableContextGet
Dim azt_query As CloudTableQuery(Of adlog)
azt_query = azt_context.CreateQuery(Of adlog)("adlog").Where(Function(e) (e.PartitionKey = "xxx")).AsTableServiceQuery()
Dim azt_result = azt_query.Execute()
然后是azt_result.ToList
答案 0 :(得分:0)
第一个查询会将查询参数发送到存储服务器,存储服务器会向您发送过滤结果。
您的第二个查询是尝试从表中提取所有数据,然后在内存中过滤它。这是因为oContext.logs.Execute()
将立即执行查询,没有参数。顺便说一句,它可能会完成虽然可能需要很长时间。
通常,您需要先设置查询,然后调用.AsTableServiceQuery(),然后获取结果。我真的不懂VB.NET,但这应该给你一般的想法:
Public ReadOnly Property logs() As CloudTableQuery(Of adlog)
Get
Return CreateQuery(Of adlog)("adlog")
End Get
End Property
...
Dim oContext = New kdlib.kdlogs.adlog_context()
Dim q = From adlogs In oContext.logs Where adlogs.PartitionKey = "xxxxxx"
Dim qQuery = q.AsTableServiceContext() //Do this after setting up parameters
Dim qResult = q.ToList() //Actually executes the query.