如何将以下方法转换为异步方法?

How to convert the following method to asynchronous method?

我需要将此方法转换为异步方法。

public User GetUserByID(int id)
 {
    return  _unitofwork.UserRepository.FindByCondition(u => u.Id == id).FirstOrDefault();
 }

这就是我更改代码的方式。

public async Task<User> GetUserByID(int id)
 {
    return await _unitofwork.UserRepository.FindByCondition(u => u.Id == id).FirstOrDefault();
 }

.FirstOrDefault().FirstOrDefaultAsync()不能使用there.I只需要return单用户。谁能指出我正确的方向?

'Task<IEnumerable<User>>' does not contain a definition for 'FirstOrDefault' and no accessible extension method 'FirstOrDefault' accepting a first argument of type 'Task<IEnumerable<User>>' could be found (are you missing a using directive or an assembly reference?) [JobsPortal]

编辑 - 抱歉。我的小错误。 我应该使用这样的代码。

public async Task<User> GetUserByID(int id)
 {
    return (await _unitofwork.UserRepository.FindByCondition(u => u.Id == id)).FirstOrDefault();
 }

好像FindByCondition本身就是一个异步方法。

您只需要在其中添加一些额外的括号,以便在调用 FirstOrDefault() 之前 await 来自 FindByCondition 的结果。

return (await _unitofwork.UserRepository.FindByCondition(u => u.Id == id)).FirstOrDefault();

按照你的方式,它试图在 FindByCondition 返回的 Task 上调用 FirstOrDefault 而不等待它。