Добрый день,
Я пытаюсь получить свою ценность.Но я получаю результат, который говорит: System.Threading.Tasks.UnwrapPromise
1 [System.Threading.Tasks.VoidTaskResult] `
Вот мой пример кода:
public string GetStatusName(int empId){
var status = Task.Run(async () =>
{
return await myRepo.GetStatus().Where(x=>x.EmpId == empId).Select(x => x.status).FirstOrDefaultAsync();
});
return status.ToString();
}
Результатом должно быть имястатуса, но он выглядит иначе.
Я пытался использовать .Result()
в return status.Result().ToString()
, но он блокирует поток пользовательского интерфейса, поэтому выборка занимает тысячи минут для тысячи записей.
Примечание: данный метод не должен быть асинхронным согласно требованию.поэтому я поместил Task.Run...
в свой метод, чтобы иметь возможность создать асинхронный запрос из репо
Я использую GetStatusName()
внутри этого кода:
public async Task<IEnumerable<EmployeeDto>> GetAll(){
var employees = await getFromRepo.Employees();
return employees.Select(x=>new EmployeeDto{
...
Status = GetStatusName(x.EmpId)
...
}).GroupBy(x=>new{
x.EmployeeId
}).Select(x=>x.First)).ToList();
}
Я попробовал этот, чтобы сделать GetStatusName
асинхронный и попробовал этот код:
return employees.Select(async x=>new EmployeeDto{
...
Status = await GetStatusName(x.EmpId)
...
}).GroupBy(x=>new{
x.EmployeeId
}).Select(x=>x.First)).ToList();
Но я получаю сообщение об ошибке внутри .GroupBy(...)
высказывания Anonymous Types
и что-то вроде Can't resolve symbol EmployeeId
Любая помощь, пожалуйста?