【问题标题】:How to apply filter in Azure table client如何在 Azure 表客户端中应用筛选器
【发布时间】:2022-11-10 02:57:29
【问题描述】:

我正在研究 Azure 存储表。下面是partitionKey和rowkey

  1. partitionKey = 产品类型
  2. rowKey = 区域

    我使用下面的过滤器来获取数据(参见下面的代码)。如果 rowkey (region) 为空,那么它应该从所有区域获取产品类型。但是,它得到空数据。如果我传递有效的 Partitionkey(ProductType) 和 RowKey (region),它就会得到数据。

    AsyncPageable<T> result =TableClient.QueryAsync<T>(filter: $"PartitionKey eq '{partitionKey}' and RowKey eq '{rowKey}'"); 
    

    注意:分区键是必需的

    任何建议。 谢谢

【问题讨论】:

    标签: azure asp.net-core azure-table-storage


    【解决方案1】:

    如果 rowkey (region) 为 null 那么它应该从 all 中获取产品类型 地区。

    如果这是您想要的,您需要将代码更改为如下所示:

    AsyncPageable<T> result = TableClient.QueryAsync<T>(filter: $"PartitionKey eq '{partitionKey}'"); 
    

    更新

    我想要的是如果用户提供了 ProductType 和 Region 然后 使用两者进行过滤。如果用户只提供 ProductType 然后包括 所有地区。

    在这种情况下,您将需要使用两种不同的查询 - 一种是同时存在 PartitionKey 和 RowKey 时,另一种是仅存在 PartitionKey 时。

    您的代码将类似于:

    var query = string.IsNullOrWhiteSpace(rowKey) ? 
      $"PartitionKey eq '{partitionKey}'" : $"PartitionKey eq '{partitionKey}' and RowKey eq '{rowKey}'";
    AsyncPageable<T> result = TableClient.QueryAsync<T>(filter: query); 
    
    

    【讨论】:

    • 谢谢 Gaurav,如果我想要 ProductType 和 Region 的数据库(例如 - 亚洲地区)我想要的是如果用户提供了 ProductType 和 Region 然后使用两者进行过滤。如果用户仅提供 ProductType,则包括所有区域。
    • 更新了我的答案。 HTH。
    猜你喜欢
    • 2020-04-26
    • 2021-12-08
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多