对不起,如果这听起来像是一个相当愚蠢的问题,但我想对Windows Azure表中的数据进行"选择"。我尝试了以下方法,它奏效了:
from question in _statusTable.GetAll()
where status.RowKey.StartsWith(name)
然后我尝试了
from question in _statusTable.GetAll()
where status.Description.StartsWith(name)
这个什么也没给我。谁能向我解释我是否可以或如何查询不属于 RowKey 或分区键的行。
您可以查询任何属性,但支持的查询类型有限 - 例如 不支持StartsWith
。此外,如果您没有在 PartitionKey 和 RowKey 上进行查询,那么有一些非常重要的性能问题需要了解 - 并且您始终需要了解 ContinuationToken 的 - 几乎任何查询结果都可以包含这些问题。
您可以通过查看 REST API 看到支持的查询类型: http://msdn.microsoft.com/en-us/library/dd894031.aspx - 它非常有限(但因此速度很快):
- 平等
- 大于
- 大于或等于
- 小于
- 小于或等于
- 不等于
如果您需要执行更多操作,请:
- 您可以通过执行
GreaterThanOrEqualTo("Fred") and LessThan("Free")
来模仿StartsWith("Fred")
之类的事情 - 或者客户端过滤将起作用 - 但这意味着从存储中提取所有行 - 这可能是大量数据,并且可能在计算和事务上昂贵!
GetAll() 是做什么的?WA 表不支持 StartsWith,因此我假设 GetAll 将所有数据提取到本地,因此您的查询是通过内存中的对象完成的。如果是这样,这与Windows Azure无关,所以我会看看你的数据是否看起来像你期望的那样。