使用LINQ查询嵌套的OData集合

时间:2010-04-20 23:50:04

标签: linq odata netflix

我正在玩新Netflix OData feedhttp://odata.netflix.com/Catalog/)并遇到一些问题。我正在尝试同时学习LINQ,但很难做到我认为非常简单的事情。

我想返回与给定流派相匹配的标题列表。标题对象包含一系列类型。我不确定如何编写此查询。我在下面的尝试似乎无法使用LINQPad

from t in Titles
where t.Genres.Name.Contains("ABC")
select t

3 个答案:

答案 0 :(得分:7)

我能够使用LINQ获得我的结果:

from g in Genres
from t in g.Titles
where g.Name == "Horror"
select t

这样我就不需要使用Expand了。我也可以使用网址:http://odata.netflix.com/Catalog/Genres('Horror')/Titles()来获得相同的结果。 Chris Woodruff的这个post帮助我理解了这个问题。

答案 1 :(得分:1)

如果您收到DataServiceQueryException以及消息:请求版本'1.0'对于响应而言太低。支持的最低版本为“2.0”

您需要将.Net版本升级到.Net Framework 4并下载LINQPad for .NET Framework 4.0

答案 2 :(得分:0)

凯尔, 这将为您提供Genre

所有电影的列表
(from g in Genres.Expand("Titles")
where g.Name == "Horror"
select g).Dump();

这将在LinqPad中创建以下URL

/Catalog/Genres('Horror')?$expand=Titles

有趣的是我需要使用.Expand语法来获取它。 当我使用浏览器浏览netflix odata feed并想要相同的数据时,我可以使用以下URL获取它:http://netflix.cloudapp.net/Catalog/Genres('恐怖')/标题

必须有一种方法可以在没有.Expand

的情况下实现目标