Convert Result to Controller ActionResult

This helper methods simplifies the process of converting your application results to RESTful API responses.

ebeeraheem

View Profile
38 views
Dec 17, 2025
Updated Jan 06, 2026
public static class ControllerExtensions
{
    public static IActionResult ToActionResult<T>(this Result<T> result)
    {
        if (result.IsSuccess)
        {
            return result.StatusCode switch
            {
                200 => new OkObjectResult(result.Value),
                201 => new CreatedResult(string.Empty, result.Value),
                204 => new NoContentResult(),
                _ => new ObjectResult(result.Value) { StatusCode = result.StatusCode }
            };
        }

        return result.StatusCode switch
        {
            400 => new BadRequestObjectResult(result.Error),
            401 => new UnauthorizedObjectResult(result.Error),
            403 => new ObjectResult(result.Error) { StatusCode = 403 }, // No ForbidResult with body
            404 => new NotFoundObjectResult(result.Error),
            409 => new ConflictObjectResult(result.Error),
            _ => new ObjectResult(result.Error) { StatusCode = result.StatusCode }
        };
    }

    public static IActionResult ToActionResult(this Result result)
    {
        if (result.IsSuccess)
        {
            return result.StatusCode switch
            {
                200 => new OkObjectResult(result),
                201 => new CreatedResult(),
                204 => new NoContentResult(),
                _ => new ObjectResult(result) { StatusCode = result.StatusCode }
            };
        }

        return result.StatusCode switch
        {
            400 => new BadRequestObjectResult(result.Error),
            401 => new UnauthorizedObjectResult(result.Error),
            403 => new ObjectResult(result.Error) { StatusCode = 403 }, // No ForbidResult with body
            404 => new NotFoundObjectResult(result.Error),
            409 => new ConflictObjectResult(result.Error),
            _ => new ObjectResult(result.Error) { StatusCode = result.StatusCode }
        };
    }
}