存在显式转换(是否缺少强制转换?)

13

我有一个方法可以获得用户的组ID,然后我想根据用户的组ID获取新闻。

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'。存在显式转换(是否缺少强制转换?)


2
IEnumerable<News> 不是 News - Jodrell
1
令人惊讶的是,我找不到明显的完全重复项。 - Jodrell
1
我认为你的问题源于“新闻”的单数和复数拼写相同。这也适用于其他一些英语名词,例如“绵羊”。 - Jodrell
1
如果你写成了 var news = newsService.Getnews(GroupID);,你就可以避免后来的混淆。 - Jodrell
6个回答

19

Getnews返回新闻项目的集合,而您的代码正在期望一个单独的新闻项目。

您可以尝试:

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

或者期待无数的可能性。

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

1
或者 First()Single()SingleOrDefault() - Jodrell
或者只需隐藏它:var news = newsService.GetNews(GroupID); - Andrew Lewis

5

这行代码设置一个变量,将其定义为 News 的一个实例,并将其设置为 IEnumerable 的实例:

News news = newsService.Getnews(GroupID);

您想要更改为

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

基本上,您正在尝试将一组新闻设置为新闻的单个引用。

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(): 如果您期望返回零条或一条新闻。如果返回多于一条新闻,则会抛出异常。

4

这是您想要的

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

或者可能是这样的:
News news = newsService.Getnews(GroupID).FirstOrDefault();

4

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

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

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


0

存在显式转换(您是否缺少强制转换?) 我在我的C#代码中遇到了同样的问题。我正在使用VS编写代码。 我检查了整个代码,并找到了这个错误的原因。 我在我的显式接口名称中漏掉了'I'。

带有错误的图片

Picture with Error

错误解决方案

Error Solution


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接