Azure中的表查询

时间:2015-06-26 05:16:11

标签: azure azure-storage azure-table-storage

表格查询期间的我的过滤字符串如下所示......

string FilterString = string.Format("PartitionKey eq '{0}' 
and RowKey ge '{1}' and RowKey le '{2}'", 
partitionKey, startsWith, startsWith);

https://msdn.microsoft.com/library/azure/dd894031.aspx表示你可以为名字做前缀匹配。可以说有三个名字......

  • 蝙蝠侠
  • 超人
  • 蜘蛛侠

当我将startsWith设置为's'时,我希望查询返回超人和蜘蛛侠

当我说

时,上面的查询有效
RowKey ge 's' and Rowkey le 't'

然而,我希望这可以在它说...时工作。

RowKey ge 's' and Rowkey le 's'

le 被视为 lt ,恕我直言,它不应该像它那样表现。我做错了吗?

1 个答案:

答案 0 :(得分:1)

如果你想回来supermanspiderman(不确定DC&amp; Marvel Comics会如何同意,但这是另一个故事:)),你要发出的查询是:< / p>

RowKey ge 's' and Rowkey lt 't'

现在让我们考虑一下这个问题:

RowKey ge 's' and Rowkey le 's'

此查询基本上只返回{​​{1}} eq RowKey的数据。举个例子,考虑s。现在superman肯定大于superman所以你的第一个表达式(s)是RowKey ge 's',但同时你的第二个表达式(true)是{{} 1}}所以整个表达式的结果将是Rowkey le 's'

<强>更新

要测试字符串,您只需编写如下控制台应用程序:

false

从上面可以看出,false大于 string a = "s"; string b = "superman"; string c = "sz"; Console.WriteLine(b.CompareTo(a));//Prints 1 Console.WriteLine(b.CompareTo(c));//Prints -1 且小于superman