3

C# の次のコード スニペットがあります。

        var results = from g in this.context.MyStorageEventTable
                      where g.PartitionKey == partitionKey
                            && g.EventType == "MyEvent"
                      select g;
        var ev = results.FirstOrDefault();

これは、Azure テーブルに相談します。このテーブルには、20000 を超えるエンティティが含まれています。問題は、変数 ev が null 値を持つこともあれば、エンティティ オブジェクトを持つこともあります。これはランダムに発生します。オブジェクトがテーブルに存在することはわかっているので、null 値は間違った動作です。なぜこうなった?ありがとうございました!

4

3 に答える 3

4

試してみてくださいresults.AsTableServiceQuery().FirstOrDefault()。それが機能する場合、問題はクエリで継続トークンが戻ってきて、さらにデータがあることを示していることですが、その継続トークンをたどって残りのデータを取得するためのフォローアップ クエリを発行していませんでした。AsTableServiceQuery()継続トークンを無料で取得するために常に使用する必要があります。

于 2012-11-29T18:03:16.157 に答える
2

代わりに試してください:

results.take(1).AsTableServiceQuery().execute().firstOrDefault() 

firstordefaultあなたが抱えている問題は、クエリを間違った型に変換することが原因です。

テイク 1 は、効率を高めるために azure から 1 行だけ要求するだけfirstordefaultです。

于 2012-12-01T09:24:55.987 に答える