当前位置: 首页 > 知识库问答 >
问题:

Azure表存储查询(前导为零的行键)

东郭鸿福
2023-03-14

我在Azure中有一个包含以下主键和行键的存储表(不是真的,只是一个示例),并将整个表作为TableEntities列表检索:

“PartitionKey”,“00”

“PartitionKey”,“01”

“PartitionKey”,“10”

“PartitionKey”,“11”

“PartitionKey”,“20”

“PartitionKey”,“21”

当我像这样查询列表时:

var myItem = 

(from item in list

where item.RowKey == "00"

select item).FirstOrDefault();

myItem返回NULL。如果查询RowKey==“01”,情况也是如此。

但是当我单独通过行键查询任何没有前导“0”的字符串时,我会得到预期的结果。此外,如果我使用任何PartitionKey进行查询,并且RowKey具有前导“0”:

var myItem = 

(from item in list

where item.PartitionKey == "partitionkey" && item.RowKey == "00"

select item).FirstOrDefault();

我也会得到预期的结果。

如果Azure表存储中的行键是字符串,为什么一个前导“0”的字符串有关系呢?

有没有其他人碰到过这个?如果有,是不是一个窃听器?

共有1个答案

孟昆
2023-03-14

有没有其他人碰到过这个?如果有,是不是一个窃听器?

根据您的描述,在MyItem返回NULL时,列表中似乎没有合适的实体。您可以尝试输出列表中的实体

foreach (var item in list)
{
    Console.WriteLine("{0}, {1}", item.PartitionKey, item.RowKey,);
}

我用下面的代码测试,它在我这边正常工作。我不能重复你提到的问题

 CloudStorageAccount storageAccount = CloudStorageAccount.Parse("storage connectionstring");
 // Create the table client.
 CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
 // Create the CloudTable object that represents the "test" table.
 CloudTable table = tableClient.GetTableReference("test");
 TableQuery<TableEntity> query = new TableQuery<TableEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey",QueryComparisons.Equal, "partitionkey"));
 var list = table.ExecuteQuery(query);
 var myItem = (from item in list
               where item.RowKey == "00"
               select item).FirstOrDefault();

测试结果:

 类似资料:
  • 我试图使用rest API从azure数据表中检索数据。 Api错误已输出,数据无效。 如果我同时添加RowKey和PartitionKey,就像下面这样。它起作用了。 是否需要通过行键? 如果我只想从一个分区检索所有数据。我知道,我们可以在查询参数中添加一个$filter,但这不会导致性能问题吗? 请分享你的想法。 谢谢!

  • 您好,从我的问题开始:Windows Azure表访问延迟分区键和行键选择有关我在 Azure 存储帐户中组织数据的方式。我有一个表存储方案,旨在存储有关实体的信息。 大约有4000-5000个实体。共有6种实体类型,类型大致均匀分布。所以每个大约800英尺。 参数键:实体类型-日期 行键:实体标识 随着问题的详细说明,我一直遇到延迟问题,查询多个分区似乎需要很长时间。 基本上,一个可能的解决方案

  • 我们在Azure Table Storage中有一个表,自从新实现以来,它目前有50,000个条目。 PartitionKey:字符串形式的日期时间值< br> RowKey:字符串形式的数值 我们使用 生成筛选条件。PartitionKey filter是这样的:

  • 使用扩展度量,我试图检索特定VM的特定度量。每个查询似乎花费的时间都非常长,因为表中每隔15秒就会为每个VM创建新的记录。 所以我试图在最后5分钟内查询该表,但它不起作用,并给我一个错误。有人知道如何查询这些WADMETRICS表吗?

  • 我想评估一下我的Windows Azure表存储查询是如何缩放的。为此,我建立了一个简单的测试环境,在这个环境中,我可以增加表中的数据量,并测量查询的执行时间。基于时间,我想定义一个成本函数,它可以用来评估未来查询的性能。 我评估了以下查询: 使用PartitionKey和RowKey查询 使用PartitionKey和属性进行查询 使用PartitionKey和两个行键进行查询 带有Partit

  • 我有一个Person类,我将其保存到Azure表存储中的表中。 我想使用以下查询之一来查询它: 或者 无论使用哪一种,我都会收到以下错误,抛出在我用来循环查询结果的foreach循环上: 请求的操作未在指定的资源上实现。 我想这可能是因为我的Person模型没有继承TableServiceEntity(我拒绝引入这种耦合-所以我用这个属性来装饰它:[DataServiceKey("分区键","Ro