6

我正在尝试为我的一个 Azure 表实现查询,该查询应检索包含输入字符串的所有文件。

我尝试过使用 string.contains() 但这不受 Azure 支持,我也尝试过 string.startswith() 这也不支持。

我想知道是否有办法在 Azure Tables 中执行此操作。我将文件信息存储在表中,分区键是存储项目的虚拟路径。

例如,Images_Jpg_Image1.jpg 将是其中一个文件的分区键,我使用了“_”,因为 Azure 不允许在分区键中使用“/”。

我希望能够将上述分区键与

理想情况下,以下字符串将返回该分区键

图片_Images_Jpg Jpg_Image1.jpg

我已经设置了所有表和所有其他查询,这只是我无法弄清楚的一个查询。

提前感谢您的帮助,

马特

4

3 回答 3

3

表存储支持 CompareTo 方法,可以像 StartsWith 一样使用。但根据您尝试执行的搜索类型,它仍然可能对您不起作用。

MyTable.Where(t => t.PartitionKey.CompareTo("image") >= 0).ToList();
于 2011-04-22T21:18:46.817 回答
2

我在搜索 Azure 表时遇到了类似的问题,搜索名称并确保结果不区分大小写。

我最终所做的实际上是将我需要的数据从 Azure 表加载到内存中的集合中,该集合会持久保存在可查询的集合中。然后我就可以使用 Linq to Objects 来查询并获得我想要的结果。

这不是一个优雅的方法,但是如果数据收集不是很大并且是相对静态的,那么内存中对象的大小对于虚拟机拥有多少内存来说将是相对良性的。性能也快得多。

您也可以尝试将您尝试在内存中查询的分区/行键和数据,运行您的查询,迭代分区和行键并返回您的结果。不确定这是否有助于解决您的问题,但我将其作为一种可能的方法丢弃。

祝你好运!

约翰

于 2011-04-22T21:08:10.553 回答
-1

我发现使用LINQPad查询 Azure 表存储非常方便。查看Jason Halley 的博客以获取更多信息和示例。

于 2012-11-21T01:22:55.343 回答