我有一个方法可以获得用户的groupID,然后我想根据用户的GroupID获取新闻。
public IEnumerable<News> Getnews(int GroupID)
{
Expression<Func<News, bool>> constraint = null;
constraint = e => e.GroupID.Equals(GroupID);
return newsRepository.GetMany(constraint);
}
这里我称之为上述方法:
News news = newsService.Getnews(GroupID);
这是错误:
无法隐式转换类型 '
System.Collections.Generic.IEnumerable<MeetingBoard.Model.News>
'到 'MeetingBoard.Model.News
'。存在显式转换(是你 错过演员?)
答案 0 :(得分:14)
Getnews会返回一组新闻项目,您的专线预计会有一个新闻项目。
你可以尝试
News news = newsServices.Getnews(GroupID).FirstOrDefault();
或期望无数
IEnumerable<News> news = newsService.GetNews(GroupID);
答案 1 :(得分:5)
此行设置一个变量,该变量被定义为IEnumerable实例的单个新闻实例:
News news = newsService.Getnews(GroupID);
您想要更改为
IEnumerable<News> = newsService.Getnews(GroupID);
基本上,您正在尝试将新闻集合设置为单个新闻参考。
答案 2 :(得分:4)
Getnews
会返回IEnumerable<News>
(即多个新闻),并且您正尝试将其分配给News news
(即单个新闻项)。这不起作用。
根据您的目的,有两种可能性。
如果您想使用所有新闻,请将News news
更改为IEnumerable<News>
:
IEnumerable<News> news = newsService.Getnews(GroupID);
如果您只想使用一条新闻,请使用FirstOrDefault
:
News news = newsService.Getnews(GroupID).FirstOrDefault();
根据您的期望,您还可以使用以下其中一项:
First()
:您希望Getnews
始终至少返回一条新闻。如果没有返回消息,这将抛出异常。Single()
:您希望Getnews
始终只返回一条新闻。如果返回多个或零个新闻,这将抛出异常。SingleOrDefault()
:您希望返回零个或一个新闻。如果返回多个新闻,则会抛出异常。答案 3 :(得分:4)
这就是你想要的
IEnumerable<News> news = newsService.Getnews(GroupID);
或者类似的东西:
News news = newsService.Getnews(GroupID).FirstOrDefault();
答案 4 :(得分:4)
return newsRepository.GetMany(constraint);
会返回IEnumerable<News>
,您应该这样做:
return newsRepository.GetMany(constraint).FirstOrDefault();
如果在News
中找到,则返回第一个newRepository
,否则返回
答案 5 :(得分:-1)