2

odata データの使用方法をよりよく理解するために、Netflix odata サービスをいじっています。

VS 2010 では、NetFlix odata サービスへのサービス参照を追加しました。次に、データの一部のみを返すこのコードを書きました。

        var cat = new NetflixCatalog(new Uri("http://odata.netflix.com/v1/Catalog/"));

        var x = from t in cat.Titles
                where t.ReleaseYear == 2009
                select t;

        foreach (Title title in x)
        {
            ProcessTitle(title);
        }

呼び出し用に生成された uri を見て、ブラウザーで実行しました。それが返すアトム フィードには、この要素が最後にあります

  <link rel="next" href="http://odata.netflix.com:20000/v1/Catalog/Titles()/?$filter=ReleaseYear%20eq%202009&amp;$orderby=AverageRating%20desc&amp;$skiptoken=3.9D,'BVqRa'" />

これは、次のデータ セットを取得するためのリンクです (Netflix によって行われるページング)。私の質問は、この次のデータのバッチや次のバッチなどにアクセスするコードを取得するにはどうすればよいですか?

4

1 に答える 1

7

クエリは、次のリンクを表す継続オブジェクトを返す GetContinuation メソッドを持つ QueryOperationResponse として結果を返す Execute というメソッドを持つ DataServiceQuery にキャストできます。すべてのタイトルを通過する大まかなコードは次のようになります。

var cat = new NetflixCatalog(new Uri("http://odata.netflix.com/v1/Catalog/"));

var x = from t in cat.Titles
        where t.ReleaseYear == 2009
        select t;
var response = (QueryOperationResponse<Title>)((DataServiceQuery<Title>)x).Execute();

while (true)
{
    foreach (Title title in response)
    {
        Console.WriteLine(title.Name);
    }

    var continuation = response.GetContinuation();
    if (continuation == null)
    {
        break;
    }

    response = cat.Execute(continuation);
}
于 2010-11-08T14:56:52.647 に答える