如何返回 async Task<IEnumerable<SomeClass>> 的操作结果?

rac*_*act 2 c# .net-core asp.net-core

我有这段代码,但控制器期望 ActionResult 的返回类型。为什么控制器会像这样接受 Task> return await _context.Users.ToListAsync();(生成控制器时的默认代码)?

//controller
public async Task<ActionResult<IEnumerable<User>>> GetUsers()
{
        return await _userService.GetAll();
}
//service method
public async Task<IEnumerable<User>> GetAll()
{
    return await _db.Users.ToListAsync();
}
Run Code Online (Sandbox Code Playgroud)

swd*_*don 6

我相信你需要类似的东西:

public async Task<ActionResult<IEnumerable<User>>> MyController()
{
    var res = await _userService.GetAll();

    if (res == null)
    {
        return NotFound();
    }

    return Ok(res);
}
Run Code Online (Sandbox Code Playgroud)

作为旁注,我建议更改IEnumerable<>IList<>. 在这里返回可枚举并不严格正确,您还可能遇到“多重枚举”问题。