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

本文关键字:对象 何检索 检索 | 更新日期: 2023-09-27 17:52:14

我有父类Person和子类Employee, 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;

但是现在我donэt在集合中有管理器,但是由于继承,我的集合中有两倍相同的信息。我只要父母,不要孩子。

我使用db40对象数据库,我不太熟悉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);

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

我不太熟悉db40和db40 Linq的实现,但是使用标准的Linq应该可以工作:

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