Подтвердить что ты не робот

Как использовать метод AsQueryable асинхронно с MongoDb С# Driver 2.1?

В выпуске версии 2.1 драйвера MongoDb С# недавно был введен метод AsQueryable, но я изо всех сил пытаюсь найти способ его асинхронного вызова.

С Entity Framework это будет достигнуто с помощью QueryableExtensions.ToListAsync, но я не могу увидеть эквивалент с помощью MongoDb.

Поэтому задан метод репозитория, например:

public IQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate)
{
        return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable().Where(predicate);
}

Я хотел сделать что-то вроде

var myTypes = await MyRepository.GetFiltered(t => t.Id == 1).ToListAsync();

Возможно ли это?

4b9b3361

Ответ 1

Вы возвращаете неправильный тип из функции GetFiltered. Он должен возвращать IMongoQueryable<MyType> вместо IQueryable<MyType>:

public IMongoQueryable<MyType> GetFiltered(Expression<Func<MyType, bool>> predicate)
{
    return Database.GetCollection<MyType>(typeof(MyType).Name).AsQueryable()
        .Where(predicate);
}

Затем вы можете успешно назвать это как:

var myTypes = await MyRepository.GetFiltered(t => t.Id == 1).ToListAsync();