如果我创建此集合:
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&LT; _title&GT;'。 存在显式转换(是你 错过演员?)
我理解这是因为我使用的是匿名类型。 _TITLE是我创建的自定义复杂对象,它公开了Netflix属性的子集。
如果我在“new”的前面添加“_TITLE”,则表示我的对象没有实现IENUMBERABLE。
如果然后_TITLE实现了IENUMBERABLE,它说_TITLE不包含ADD的定义并且仍然会出现转换错误。
基本上,我想用Netflix返回的数据设置_TITLE属性。我已经定义_TITLE来包含我需要的字段,以及PERSON的集合(用于Cast)。
答案 0 :(得分:1)
如果您的通用类型是_TITLE,那么您需要执行select new _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};
这些方面的东西。即使您不打算使用匿名类型,也可以使用var
。
答案 1 :(得分:1)
除了vcsjones的回答,你不需要在_TITLE上实现IEnumerable。发生了什么事情,当你写作
var foo = new TYPENAME { a, b };
意思是:
示例:
var names = new List<string> { "Joe", "Mary", "Susan" };
正如vcsjones所提到的,你需要在初始化对象时使用参数名称,或者你可能想要使用括号并调用构造函数
var title = new _TITLE { Title = t.ID, Cast = t.Cast };
// or
var title = new _TITLE (t.ID, t.Cast);