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

时间:2019-07-25 05:25:41

标签: c# asp.net-core .net-core

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

//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();
}

1 个答案:

答案 0 :(得分:1)

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

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

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

    return Ok(res);
}

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