2015-12-02 4 views
12

Die Version 2.1 des MongoDb C# -Treibers hat kürzlich die Methode AsQueryable wieder eingeführt, aber ich habe Mühe, eine asynchrone Methode zu finden.Wie verwende ich AsQueryable-Methode asynchron mit MongoDb C# -Treiber 2.1?

Mit Entity Framework würde dies mit QueryableExtensions.ToListAsync erreicht werden, aber ich kann kein Äquivalent mit MongoDb sehen.

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

ich so etwas wie

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

wollte tun, ist dies möglich:

So ein Repository Methode wie angegeben?

Antwort

11

Sie geben den falschen Typ aus der GetFiltered-Funktion zurück. Es sollte eine IMongoQueryable<MyType> statt IQueryable<MyType> zurückkehren:

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

Sie können dann rufen sie erfolgreich als:

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