有没有办法从包含多态类型的集合中查询所有具体类型?在我的示例中,Animal
是一个抽象类。
我知道我可以使用收集。FindAll()
,它将返回BsonDocuments
,并使用BsonSerializer
反序列化为具体类型,如下所示,但是是否有通用这样做的方式?
下面的示例有效,因为我目前在我的收藏中只有Dog
个对象。
public List<Animal> Load(string collectionName, List<string> ids)
{
var results = new List<Animal>();
var server = _client.GetServer();
var database = server.GetDatabase(_databaseName);
var collection = database.GetCollection(collectionName);
foreach (var document in collection.FindAll())
{
results.Add(BsonSerializer.Deserialize<Dog>(document));
}
return results;
}
理想情况下,我希望能够说出类似这样的内容
collection.AsQueryable<Animal>().Where(c => c.Id.In(ids)).ToList();
但这不起作用,因为Animal
抽象。
由于