MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Utilizzo di C# MongoDB LINQ con discriminatore

Quando si lavora con una gerarchia di tipi polimorfici, la variabile di raccolta e le query LINQ dovrebbero iniziare in termini di classe base. Ad esempio, per rileggere dal database tutti i documenti di tipo A, scrivere:

var collection = database.GetCollection<D>("mycol");
var query = collection.AsQueryable<D>().OfType<A>();
foreach (var a in query)
{
    // process document of type A
}

Per scopi diagnostici puoi vedere la query MongoDB nativa corrispondente usando:

var json = ((MongoQueryable<A>)query).GetMongoQuery().ToJson();

Nota che devi eseguire il cast della query su MongoQueryable (non MongoQueryable) perché la chiamata OfType() ha modificato il tipo di IQueryable.