如何将以下方法转换为异步方法?
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
而不等待它。
我需要将此方法转换为异步方法。
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
而不等待它。