如何通过 Netflix OData API 使用匿名类型
如果我创建此集合:
IEnumerable<_TITLE> _titles = null;
如何在此表达式中设置 Netflix 的结果集:
_titles = from t in Titles where t.Id == "ApUFq" select new {t, t.Cast}
我得到:
无法隐式转换类型 'System.Linq.IQueryable' 到 'System.Collections.Generic.IEnumerable<_Title>'。 存在显式转换(您是 缺少演员?)
我知道这是因为我使用的是匿名类型。 _TITLE 是我创建的一个自定义复杂对象,它公开了 Netflix 属性的子集。
如果我在“new”前面添加“_TITLE”,则表示我的对象未实现 IENUMBERABLE。
如果 _TITLE 实现了 IENUMBERABLE,则表示 _TITLE 不包含 ADD 的定义,并且仍然会出现转换错误。
基本上,我想使用从 Netflix 返回的数据设置 _TITLE 属性。我已定义 _TITLE 来包含我需要的字段,以及 PERSON 的集合(用于演员)。
If I create this collection:
IEnumerable<_TITLE> _titles = null;
How can I set the result set from Netflix in this expression:
_titles = from t in Titles where t.Id == "ApUFq" select new {t, t.Cast}
I am getting:
Cannot implicitly convert type
'System.Linq.IQueryable'
to
'System.Collections.Generic.IEnumerable<_Title>'.
An explicit conversion exists (are you
missing a cast?)
I understand it's because I am using an anonymous type. _TITLE is a custom complex object I create that exposes a subset of Netflix properties.
If I add "_TITLE" in front the of the "new" it says that my object does not implement IENUMBERABLE.
If then _TITLE implements IENUMBERABLE, it says _TITLE does not contain a definition for ADD and still getting conversion error.
Basically, I want to set the _TITLE properties with the data returned from Netflix. I have defined _TITLE to contain the fields I need, plus a collection of PERSON (for Cast).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您的通用类型是 _TITLE,那么您需要
选择新的_TITLE {Prop = Value}
。如果您打算使用泛型类型,那么您需要使用
var
:所以也许这就是您的意思:
沿着这些思路的东西。即使您不打算使用匿名类型,也可以使用
var
。If your generic type is _TITLE, then you need to do
select new _TITLE {Prop = Value}
.If you intend to use a generic type, then you need to use
var
:So perhaps this is what you meant:
Something along those lines.
var
can be used even if you don't intend to use an anonymous type.除了 vcsjones 的回答之外,您不需要在 _TITLE 上实现 IEnumerable 。发生的事情是,当你编写
它时,它的意思是:
示例:
正如 vcsjones 提到的,初始化对象时需要使用参数名称,或者您可能打算使用括号并调用构造函数
In addition to vcsjones's answer, You don't need to implement IEnumerable on _TITLE. What's going on is that when you write
it means:
Example:
As vcsjones mentioned, You need to use Parameter names when initializing an object, or perhaps you meant to use parentheses and call a constructor