我有类:
class Person
{
private int _personID;
private string _fullName;
....
....
}
class Employee : Person
{
private List<Project> _projectList;
....
....
}
class Project
{
private string _projectCode;
private List<Employee> _employeeList;
....
....
}
现在,我需要获取与_personID==0的Employee在同一项目中工作的所有Employees。受雇者ProjectList只包含一个项目。
我需要得到所有员工的PROJECT->每个员工在他的_projectList中都有相同的_projectCode。这应该在LINQ中完成。
我可以在SQL中做到这一点,但现在我使用的是Db4o对象数据库和LINQ,我真的不知道如何处理这种情况。我会感谢任何点击。(对不起我的英语)。
首先-如果Employee.ProjectList
只包含一个项目,则考虑不使用集合来保留此项目。
查询是:
var employees = Projects.Where(p => p.EmployeeList.Any(e => e.PersonID == id))
.SelectMany(p => p.EmployeeList)
.Where(e => e.PersonID != id)
.Distinct();
UPDATE:在查询语法中,Distinct
和Any
并没有等价物,但这里的查询与上面的查询相同,具有混合语法:
var employees = (from p in Projects
where p.EmployeeList.Any(e => e.PersonID == id)
from e in p.EmployeeList
where e.PersonID != id
select e).Distinct();