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

我有一个方法,它给了我用户的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中编写代码。 我检查了完整的代码,我得到了这个错误的理由。 我在显式界面名称中错过了“我”。

图片有错误

图片有错误

错误解决方案

错误解决方案