Linq 如何在Netflix OData API中使用匿名类型
如果我创建此集合:Linq 如何在Netflix OData API中使用匿名类型,linq,odata,Linq,Odata,如果我创建此集合: IEnumerable<_TITLE> _titles = null; 我得到: 无法隐式转换类型 “System.Linq.IQueryable” 到 'System.Collections.Generic.IEnumerable'。 存在一个显式转换(您是吗 缺少演员阵容?) 我明白这是因为我使用的是匿名类型_TITLE是我创建的一个自定义复杂对象,它公开Netflix属性的子集 如果在“new”前面添加“_TITLE”,则表示我的对象未实现IENUMBER
IEnumerable<_TITLE> _titles = null;
我得到:
无法隐式转换类型
“System.Linq.IQueryable”
到
'System.Collections.Generic.IEnumerable'。
存在一个显式转换(您是吗
缺少演员阵容?)
我明白这是因为我使用的是匿名类型_TITLE是我创建的一个自定义复杂对象,它公开Netflix属性的子集
如果在“new”前面添加“_TITLE”,则表示我的对象未实现IENUMBERABLE
如果then_TITLE实现了IENUMBERABLE,则表示_TITLE不包含ADD的定义,并且仍然存在获取转换错误
基本上,我想用Netflix返回的数据设置_TITLE属性。我已经定义了_TITLE来包含我需要的字段,以及一个PERSON集合(用于Cast)。如果您的泛型类型是_TITLE,那么您需要执行
选择新_TITLE{Prop=Value}
如果要使用泛型类型,则需要使用var
:
var _titles = from t in Titles where t.Id == "ApUFq" select new {t, t.Cast};
也许这就是你的意思:
var _titles = from t in Titles where t.Id == "ApUFq" select new _TITLE {Title = t};
沿着这些路线的东西<即使您不打算使用匿名类型,也可以使用code>var。除了vcsjones的答案之外,您不需要在标题上实现IEnumerable。当你写作的时候发生了什么
var foo = new TYPENAME { a, b };
这意味着:
var names = new List<string> { "Joe", "Mary", "Susan" };
请修复您的文本,使其正确格式化代码。为什么他需要在标题上实现
IEnumerable
?我认为这个假设的工作方式是LINQ操作收益IEnumerable。我认为出现的问题是,当他打算将{}用作对象初始值设定项时,他使用了{}作为集合初始值设定项。
var names = new List<string> { "Joe", "Mary", "Susan" };
var title = new _TITLE { Title = t.ID, Cast = t.Cast };
// or
var title = new _TITLE (t.ID, t.Cast);