0

下面的代码检索所有实体,其中PartitionKey = "Smith".

如果我想消除这个约束并返回表中的所有实体,我应该如何修改下面的代码?

对不起,如果这似乎是一个愚蠢的问题,但我是 C# 和 AzureDBs 的新手,官方网站上的教程和示例代码非常有限。

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);
}
4

1 回答 1

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 方法实际上在内部处理此延续令牌,因此如果您出于任何原因想取消此操作,则不能这样做。

你可以var queryResult = table.ExecuteQuerySegmented(new TableQuery<MyEntity>(), token);像 Gaurav 说的那样使用。

更详细的可以参考这个回复

于 2018-04-18T06:54:32.830 回答