woa*_*sie 2 netflix wcf-data-services odata
我正在玩Netflix odata服务,以更好地了解如何使用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);
}
Run Code Online (Sandbox Code Playgroud)
我查看了为调用生成的uri并在浏览器中运行它.它返回的原子进给最后有这个元素
<link rel="next" href="http://odata.netflix.com:20000/v1/Catalog/Titles()/?$filter=ReleaseYear%20eq%202009&$orderby=AverageRating%20desc&$skiptoken=3.9D,'BVqRa'" />
Run Code Online (Sandbox Code Playgroud)
这是一个将检索下一组数据的链接(由Netflix完成的分页).我的问题是如何让我的代码访问下一批数据和下一批数据?
查询可以转换为DataServiceQuery,它有一个名为Execute的方法,它返回结果QueryOperationResponse,它有一个GetContinuation方法,它返回一个表示下一个链接的continuation对象.浏览所有标题的粗略代码可能如下所示:
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |