13

我有一种方法可以为我提供用户的 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”。存在显式转换(您是否缺少演员表?)

4

6 回答 6

17

Getnews 返回一组新闻项目,而您的线路期待单个新闻项目。

你可以试试

News news = newsServices.Getnews(GroupID).FirstOrDefault();

或期待无法估量的

IEnumerable<News> news = newsService.GetNews(GroupID);
于 2013-05-02T08:34:31.363 回答
5

此行将定义为 News 的单个实例的变量设置为 IEnumerable 的实例:

News news = newsService.Getnews(GroupID);

您想更改为

IEnumerable<News> = newsService.Getnews(GroupID);

基本上,您正在尝试将新闻集合设置为新闻的单个参考。

于 2013-05-02T08:34:32.560 回答
4

Getnews返回一个IEnumerable<News>(即多个新闻)并且您试图将其分配给News news(即单个新闻项目)。那是行不通的。

有两种可能性,取决于你想做什么。

如果要使用所有新闻,请更改News newsIEnumerable<News>

IEnumerable<News> news = newsService.Getnews(GroupID);

如果您只想使用单个新闻,请使用FirstOrDefault

News news = newsService.Getnews(GroupID).FirstOrDefault();

根据您的期望,您还可以使用以下方法之一:

  • First():您希望Getnews总是返回至少一条新闻。如果没有返回消息,这将抛出异常。
  • Single(): 你希望Getnews总是只返回一个消息。如果返回多于一个或零个新闻,这将引发异常。
  • SingleOrDefault():您期望返回零个或一个消息。如果返回多个新闻,这将引发异常。
于 2013-05-02T08:34:50.123 回答
4

这就是你想要的

IEnumerable<News> news = newsService.Getnews(GroupID);

或者可能是这样的:

News news = newsService.Getnews(GroupID).FirstOrDefault();
于 2013-05-02T08:35:35.947 回答
4

return newsRepository.GetMany(constraint);返回一个IEnumerable<News>,你应该这样做:

 return newsRepository.GetMany(constraint).FirstOrDefault();

News如果在 中找到,则返回第一个newRepository,否则返回 null

于 2013-05-02T08:35:36.443 回答
0

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

有错误的图片

有错误的图片

错误解决方案

错误解决方案

于 2018-08-13T10:06:33.187 回答