Sta*_*ord 5 .net c# ienumerable .net-core webapi
我正在尝试从数据库中获取条目列表。但我收到错误。
无法将类型“System.Collections.Generic.IEnumerable<models.DbModels.GrantProgram>”隐式转换为“Microsoft.AspNetCore.Mvc.ActionResult<System.Collections.Generic.IEnumerable<models.DbModels.GrantProgram>>”[API]
请帮我。我该如何解决这个问题?
控制器.cs
public async Task<ActionResult<IEnumerable<GrantProgram>>> GetGrants()
{
//This is where the error is showing.
return await _grants.GetGrants();
}
Run Code Online (Sandbox Code Playgroud)
业务层
IGrants.cs
Task<IEnumerable<GrantProgram>> GetGrants();
Run Code Online (Sandbox Code Playgroud)
赠款.cs
public async Task<IEnumerable<GrantProgram>> GetGrants()
{
return await _grantRepository.GetGrants();
}
Run Code Online (Sandbox Code Playgroud)
数据访问层
IGrantsRepository.cs
Task<IEnumerable<GrantProgram>> GetGrants();
Run Code Online (Sandbox Code Playgroud)
GrantsRepository.cs
public async Task<IEnumerable<GrantProgram>> GetGrants()
{
return await _context.GrantProgram.ToListAsync();
}
Run Code Online (Sandbox Code Playgroud)
我怀疑你想要的代码是这样的
return new ActionResult<IEnumerable<GrantProgram>>(await _grants.GetGrants());
Run Code Online (Sandbox Code Playgroud)
为什么您现有的代码不起作用?因为(根据文档):
C# 不支持接口上的隐式转换运算符。
它建议:
因此,为了使用 ActionResult,必须将接口转换为具体类型。
严格来说这并不正确。这是一个选项,是的(例如调用ToList),但不是必需的。另一种选择(如我所示)是自己new升级ActionResult而不是依赖隐式转换)。
其他阅读:
| 归档时间: |
|
| 查看次数: |
3621 次 |
| 最近记录: |