存在显式转换(您是否错过了演员?)
我有一个方法,它给了我用户的groupID,然后我想根据用户的GroupID获取新闻。
public IEnumerable Getnews(int GroupID) { Expression<Func> constraint = null; constraint = e => e.GroupID.Equals(GroupID); return newsRepository.GetMany(constraint); }
在这里我调用上面的方法:
News news = newsService.Getnews(GroupID);
这是错误:
无法将类型’
System.Collections.Generic.IEnumerable
‘隐式转换为’MeetingBoard.Model.News
‘。 存在显式转换(您是否错过了演员?)
Getnews返回一组新闻项目,您的专线预计会有一个新闻项目。
你可以试试
News news = newsServices.Getnews(GroupID).FirstOrDefault();
或期望无数
IEnumerable news = newsService.GetNews(GroupID);
该行设置一个变量,该变量被定义为IEnumerable实例的单个News实例:
News news = newsService.Getnews(GroupID);
你想改变
IEnumerable = newsService.Getnews(GroupID);
基本上,您正在尝试将新闻集合设置为单个新闻参考。
Getnews
返回IEnumerable
(即多个新闻),并且您正尝试将其分配给News news
(即单个新闻项目)。 这不起作用。
根据您的要求,有两种可能性。
如果您想使用所有新闻,请将新闻新闻更改为IEnumerable
:
IEnumerable news = newsService.Getnews(GroupID);
如果您只想使用单个新闻,请使用FirstOrDefault
:
News news = newsService.Getnews(GroupID).FirstOrDefault();
根据您的期望,您还可以使用以下方法之一:
-
First()
:你希望Getnews
总是至少返回一条新闻。 如果没有返回消息,这将抛出exception。 -
Single()
:您希望Getnews
始终只返回一条新闻。 如果返回多个或零个新闻,则会抛出exception。 -
SingleOrDefault()
:您希望返回零个或一个新闻。 如果返回多个新闻,这将抛出exception。
这就是你想要的
IEnumerable news = newsService.Getnews(GroupID);
或者类似的东西:
News news = newsService.Getnews(GroupID).FirstOrDefault();
return newsRepository.GetMany(constraint);
返回一个IEnumerable
,你应该这样做:
return newsRepository.GetMany(constraint).FirstOrDefault();
如果在newRepository
找到它,则返回第一个News
,否则newRepository
null
存在显式转换(您是否错过了演员表?)我在C#代码中遇到了同样的问题。 我在VS中编写代码。 我检查了完整的代码,我得到了这个错误的理由。 我在显式界面名称中错过了“我”。
图片有错误
错误解决方案