Lorsque vous travaillez avec une hiérarchie de type polymorphe, votre variable de collection et vos requêtes LINQ doivent commencer en termes de classe de base. Par exemple, pour lire tous les documents de type A à partir de la base de données, vous écririez :
var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
// process document of type A
}
À des fins de diagnostic, vous pouvez voir la requête MongoDB native correspondante en utilisant :
var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();
Notez que vous devez convertir la requête en MongoQueryable (et non MongoQueryable