存在显式转换(您是否错过了演员?)

时间:2013-05-02 08:31:12

标签: c# asp.net-mvc

我有一个方法可以获得用户的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'。存在显式转换(是你   错过演员?)

6 个答案:

答案 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)

存在显式转换(您是否缺少演员表?) 我在C#代码中遇到了同样的问题。我正在用VS编写代码。 我检查了完整的代码,并且得到了此错误背后的原因。 我在显式接口名称中错过了“我”。

图片有​​误

Picture with Error

错误解决方案

Error Solution