Windows Azure Tables, запрос с использованием Contains - PullRequest
6 голосов
/ 23 апреля 2011

Я пытаюсь реализовать запрос для одной из моих таблиц Azure, запрос должен получить все файлы, содержащие входную строку.

Я пытался использовать string.contains (), но это не поддерживается Azure, я также пытался использовать string.startswith (), это также не поддерживается.

Мне интересно, есть ли способ сделать это в таблицах Azure. Я храню информацию о файлах в таблицах, а ключ раздела - это виртуальный путь к хранимому элементу.

например. Images_Jpg_Image1.jpg будет ключом раздела для одного из файлов, я использовал '_', потому что Azure не разрешит '/' в ключах раздела.

Я бы хотел сравнить приведенный выше ключ раздела с

В идеале следующие строки возвращали бы этот ключ раздела

Images_ Images_Jpg Jpg_ Image1.jpg

У меня есть все настроенные таблицы и все остальные запросы, это только один запрос, который я не могу понять.

Заранее спасибо за любую помощь,

Мэтт

Ответы [ 3 ]

3 голосов
/ 23 апреля 2011

Table Storage поддерживает метод CompareTo, который можно использовать как StartsWith. Но он все равно может не сработать для вас в зависимости от типов поиска, который вы пытаетесь выполнить.

MyTable.Where(t => t.PartitionKey.CompareTo("image") >= 0).ToList();
2 голосов
/ 23 апреля 2011

Я столкнулся с похожими проблемами при поиске в таблицах Azure, выполняя поиск по именам и следя за тем, чтобы результаты были неизменными.

В результате я фактически загружал нужные мне данные из таблиц Azure в коллекцию в памяти, которая сохраняется в запрашиваемой коллекции. Затем я смог использовать Linq to Objects для запроса и получения желаемых результатов.

Не элегантный подход, но если сбор данных не велик и является относительно статическим, размер объекта в памяти будет относительно мягким по сравнению с объемом памяти, который имеет виртуальная машина. Производительность также была намного выше.

Вы также можете попытаться получить в памяти ключ раздела / строки и данные, которые вы пытаетесь запросить, выполнить запрос, повторить ключи разделения и строки и вернуть свои результаты. Не уверен, что это поможет решить ваш вопрос, но я выбрасываю его как возможный подход.

Удачи!

John

0 голосов
/ 21 ноября 2012

Я обнаружил, что запрос к хранилищу Azure Table с использованием LINQPad очень удобен.Посетите блог Джейсона Халли для получения дополнительной информации и образцов.

...