|
public class Base
|
{
|
public string A { get; set; }
|
}
|
|
public class T1 : Base
|
{
|
public string B { get; set; }
|
}
|
|
public class T2 : Base
|
{
|
public string C { get; set; }
|
}
|
|
[Test]
|
public void CastTest()
|
{
|
var server = MongoServer.Create("...");
|
var db = server.GetDatabase("test");
|
var collection = db.GetCollection<Base>("castTest");
|
|
var t1 = new T1 { A = "T1.A", B = "T1.B" };
|
var t2 = new T2 { A = "T2.A" };
|
collection.Insert(t1);
|
collection.Insert(t2);
|
|
var query = from t in collection.AsQueryable() where t is T1 && ((T1)t).B == "T1.B" select t;
|
var results = query.ToList();
|
Assert.That(results.Count, Is.EqualTo(1));
|
Assert.That(results[0], Is.InstanceOf(typeof(T1)));
|
Assert.That(results[0].A, Is.EqualTo("T1.A"));
|
}
|