これは開発用ストレージのバグだと思います。ListTables(prefix)のコードを調べましたが、これが見つかりました(ListTablesSegmentedImplCore()メソッドの一部のみを貼り付けています)。
if (prefix != string.Empty)
{
// Append Max char to end '{' is 1 + 'z' in AsciiTable
string uppperBound = prefix + '{';
query = query.Where((table) => table.TableName.CompareTo(prefix) >= 0 && table.TableName.CompareTo(uppperBound) < 0);
}
したがって、何が起こっているのかというと、次のようなクエリが作成されます。
http://[開発ストレージテーブルエンドポイント]/ devstoreaccount1 / Tables()?$ filter =(TableName ge'a')および(TableName lt'a {')
これで、開発ストレージがデータストレージの舞台裏でSQLServerを使用することがわかりました。このクエリを取得して、そのSQL Serverデータベースに対して同等のクエリを実行すると、結果が返されませんでした。
SELECT TOP 1000 [AccountName]
,[TableName]
,[LastModificationTime]
,[ServiceMetadata]
,[Metadata]
,[SchemaXml] FROM [DevelopmentStorageDb201206].[dbo].[TableContainer] Where [TableName] >= 'a' and [TableName] < 'a{'
暫定的には、自分の側でフィルタリングを行う必要があると思います。また、開発ストレージで長い間発見された別のバグがあり、それはテーブルの継続トークンに関係していることに注意してください。テーブルを一覧表示し、ストレージアカウントに1000を超えるテーブルがある場合、開発ストレージでテーブルをフェッチするときに継続トークンは返されません。
お役に立てれば。