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