以下代码检索PartitionKey = "Smith"
。
如果我想消除此约束并返回表中的所有实体,我应该如何修改以下代码?
很抱歉,如果这似乎是一个愚蠢的问题,但我是C#和AzureDB的新手,并且官方网站上的教程和示例代码非常有限。
TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Smith"));
foreach (CustomerEntity entity in table.ExecuteQuery(query))
{
Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey,
entity.Email, entity.PhoneNumber);
}
答案 0 :(得分:1)
您无法使用正在过滤所需内容的 where 属性。
请参阅以下代码:TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>();
以下是完成的代码:
static void Main(string[] args)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("people");
table.CreateIfNotExists();
TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>();
foreach (CustomerEntity entity in table.ExecuteQuery(query))
{
Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey,
entity.Email, entity.PhoneNumber);
}
}
但请记住,表服务在一次调用中最多返回1000个实体。如果表中有超过1000个实体可用,则返回一个继续令牌,可用于获取下一组实体。 ExecuteQuery方法实际上在内部处理此延续令牌,因此如果您因任何原因想要取消此操作,则无法执行此操作。
Gaurav说,你可以使用var queryResult = table.ExecuteQuerySegmented(new TableQuery<MyEntity>(), token);
。
有关详细信息,请参阅此reply。