C# mongodb 2.0通过鉴别器进行查询

C# mongodb 2.0通过鉴别器进行查询,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,给定以下模型 [BsonDiscriminator(RootClass = true)] [BsonKnownTypes(typeof(Employee), typeof(Contractor)] public class Person { public ObjectId Id {get;set;} public string Name {get;set;} } public class Employee : Person { public double Salary {

给定以下模型

[BsonDiscriminator(RootClass = true)]
[BsonKnownTypes(typeof(Employee), typeof(Contractor)]
public class Person
{
    public ObjectId Id {get;set;}
    public string Name {get;set;}
}
public class Employee : Person
{
    public double Salary {get;set;}
}    
public class Contractor : Person
{
    public double DailyRate {get;set;}
}
使用legacy driver,我可以执行以下操作以获得所有承包商的列表

var employees = database.GetCollection("people").AsQueryable<Employee>().OfType<Employee>();

此处有相关功能请求:

现在,您可以使用“is”过滤器

您仍然需要在最后将其转换为Employee,但它们都将根据注册的鉴别器进行过滤。

谢谢Craig--在我的文章中,有趣的是,我在基类中包含了BsonDiscriminator属性,但在我的实际代码中,我忘记了它——这当然会导致System.FormatException,因为它试图反序列化同一集合中的承包商实例。(脸掌)
var list = await collection.Find(filter).ToListAsync();
collection.Find(x => x is Employee).ToListAsync();