我正在尝试为我的一个Azure表实现查询,查询应该检索包含输入字符串的所有文件。
我尝试过使用string.contains()但Azure不支持此功能,我也尝试过string.startswith(),但这也不受支持。
我想知道的是,如果有办法在Azure表中执行此操作。我将文件信息存储在表中,而分区键是存储项目的虚拟路径。
e.g。 Images_Jpg_Image1.jpg将是其中一个文件的分区键,我使用'_',因为Azure不允许在分区键中使用'/'。
我希望能够将上面的分区键与
进行比较理想情况下,以下字符串将返回该分区键
Images_ Images_Jpg Jpg_ Image1.jpg
我已经设置了所有表格以及所有其他查询,这只是我无法弄清楚的这一个查询。
提前感谢您的帮助,
马特
答案 0 :(得分:3)
Table Storage支持CompareTo方法,可以像StartsWith一样使用。但根据您尝试进行的搜索类型,它仍然可能对您不起作用。
MyTable.Where(t => t.PartitionKey.CompareTo("image") >= 0).ToList();
答案 1 :(得分:2)
我遇到类似的问题,搜索Azure表搜索名称并确保结果不区分大小写。
我最终做的实际上是将我需要的数据从Azure表加载到内存集合中,该集合在可查询集合中持久存储。然后,我可以使用Linq to Objects查询并获得我想要的结果。
不是一种优雅的方法,但如果数据收集不是很大并且是相对静态的,那么内存中对象的大小相对于VM具有多少内存是相对温和的。性能也快得多。
您也可以尝试在内存中查找分区/行键和数据,运行查询,迭代分区和行键并返回结果。不确定这是否有助于解决您的问题,但我将其作为一种可能的方法抛弃。
祝你好运!约翰
答案 2 :(得分:-1)
我发现使用LINQPad查询Azure表存储非常方便。查看Jason Halley's博客了解更多信息和示例。