First of all make sure that OkObjectResult implements IActionResult.
The important thing is however is to take note that you can not convert directly between a Task of said class to a Concrete type of said class. In your case you have Task<T>, you can not directly convert it to a type of it generic argument directly.
In the comments @Enigmativity suggests that you get Task.Result as OkObjectResult. Even though it should work, it may end up with deadlocks (I see that you are working on .net core which does not have synchronization context therefore not likely to end up in a deadlock).
My advice is to go async all the way.
var result = await controller.Create(Id);
var okObjectResult = result as OkObjectResult;
var okObjectResult = result.Result as OkObjectResult;?IActionResult result = await controller.Create(Id);Task<T>andOkObjectResultare two unrelated types with root typeobjectas the only common ancestor. The actual problem should be about how to get and convert the result of a Task<T> object to another type, as above comments suggest.