我有父类Person和子类Employee,它也是Manager的父类
class Person
{
private int _personID;
private string _fullName;
....
....
}
class Employee : Person
{
private int _salary;
....
....
}
class Manager : Employee
{
private Project _project;
....
....
}
现在,我需要让没有经理的员工。我试过了:
var employees = from Employee e in db
select e;
然后我注意到由于继承,我在我的集合中有经理。所以我认为它可能是这样的:
var employees = from Employee e in db
from Manager m in db
where e.PersonID != m.PersonID
select e;
但是现在我没有管理员在集合中,但由于继承,我在我的集合中有两倍相同的信息。我只需要没有孩子的父母。
我正在使用Db4o对象数据库,我对LINQ不是很熟悉。
更新
EmbeddedObjectContainer db = Db4oEmbedded.OpenFile(PATH_TO_DATABASE);
我想出了如何做到这一点,但你必须查询两次,所以这不是最好的解决方案。
var employees = from Employee e in db
select e;
var managers = from Manager m in db
select m;
var result = employees.Except(managers);
答案 0 :(得分:1)
我不熟悉db4o和db4o Linq实现,但是使用标准的Linq这应该可行:
var employees = db.AsQueryable<Employee>().Where(e => !(e is Manager));