如何检索没有子项的父对象

时间:2014-03-21 22:09:14

标签: c# linq

我有父类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);

1 个答案:

答案 0 :(得分:1)

我不熟悉db4o和db4o Linq实现,但是使用标准的Linq这应该可行:

var employees = db.AsQueryable<Employee>().Where(e => !(e is Manager));