Не удается преобразовать задачу <List <TEntity>> в задачу <IList <TEntity>> - PullRequest
0 голосов
/ 06 июня 2019

Я пишу небольшой метод-оболочку для EF Core DbSet. У меня есть следующий метод:

public Task<IList<TEntity>> GetAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> getFunction)
{
    if (getFunction == null)
    {
        Task.FromResult(new List<TEntity>());
    }
    return getFunction(_dbSet).AsNoTracking().ToListAsync();
}

Класс, как вы можете видеть, является универсальным, и _dbSet является экземпляром конкретного DbSet из контекста. Однако для вопроса это не имеет большого значения.
Для кода я получаю следующую ошибку:

[CS0029] Не удается неявно преобразовать тип 'System.Threading.Tasks.Task>' в 'System.Threading.Tasks.Task>'

Если я изменю возвращаемое значение на Task<List<TEntity>>, ошибки не будет.
У кого-нибудь есть идея, почему он не может ее преобразовать? Спасибо!

1 Ответ

3 голосов
/ 06 июня 2019

Самый простой способ, на мой взгляд, это дождаться этой задачи.Так что он будет работать с минимальными изменениями:

public async Task<IList<TEntity>> GetAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> 
getFunction)
{
    if (getFunction == null)
    {
        return new List<TEntity>();
    }
    return await getFunction(_dbSet).AsNoTracking().ToListAsync();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...