6

Azure テーブルの 1 つにクエリを実装しようとしています。クエリは、入力文字列を含むすべてのファイルを取得する必要があります。

string.contains() を使用してみましたが、これは Azure でサポートされていません。string.startswith() も試しましたが、これもサポートされていません。

私が疑問に思っているのは、Azure テーブルでこれを行う方法があるかどうかです。ファイル情報をテーブルに保存しています。パーティション キーは、保存されたアイテムの仮想パスです。

たとえば、Images_Jpg_Image1.jpg はいずれかのファイルのパーティション キーになります。Azure ではパーティション キーに「/」を使用できないため、「_」を使用しました。

上記のパーティションキーを比較できるようにしたい

理想的には、次の文字列がそのパーティション キーを返します。

Images_ Images_Jpg Jpg_ Image1.jpg

すべてのテーブルと他のすべてのクエリをセットアップしましたが、この 1 つのクエリだけがわかりません。

助けてくれてありがとう、

マット

4

3 に答える 3

3

Table Storage は、StartsWith のように使用できる CompareTo メソッドをサポートしています。ただし、実行しようとしている検索の種類によっては、それでもうまくいかない場合があります。

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

名前を検索し、結果が大文字と小文字を区別しないことを確認する Azure テーブルに対する検索で同様の問題に遭遇しました。

私が実際に行ったことは、必要なデータを Azure テーブルから、クエリ可能なコレクションに永続化されるインメモリ コレクションにロードすることでした。その後、Linq to Objects を使用してクエリを実行し、必要な結果を得ることができました。

洗練されたアプローチではありませんが、データ コレクションがそれほど大きくなく、比較的静的である場合、メモリ内のオブジェクトのサイズは、VM のメモリ量に比べて比較的穏やかです。パフォーマンスもはるかに高速でした。

また、メモリ内でクエリを実行しようとしているパーティション/行キーとデータを試して、クエリを実行し、パーティション化と行キーを繰り返して、結果を返すこともできます。それがあなたの質問の解決に役立つかどうかはわかりませんが、可能なアプローチとして捨てます。

幸運を!

ジョン

于 2011-04-22T21:08:10.553 に答える
-1

LINQPadを使用してAzureテーブルストレージにクエリを実行すると非常に便利です。詳細とサンプルについては、 JasonHalleyのブログをご覧ください。

于 2012-11-21T01:22:55.343 に答える