Cuando trabaje con una jerarquía de tipos polimórficos, su variable de colección y sus consultas LINQ deben comenzar en términos de la clase base. Por ejemplo, para leer todos los documentos de tipo A de la base de datos, escribiría:
var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
// process document of type A
}
Para fines de diagnóstico, puede ver la consulta MongoDB nativa correspondiente usando:
var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();
Tenga en cuenta que debe enviar la consulta a MongoQueryable (no a MongoQueryable