我有课程:
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在同一个项目上工作的所有员工.Employee.ProjectList只包含一个项目。
我需要得到关于谁为所有员工工作的PROJECT - &gt;每个Employee在其_projectList中都有相同的_projectCode。这应该在LINQ中完成。
我可以在SQL中执行此操作,但现在我正在使用Db4o对象数据库和LINQ,我真的不知道如何处理这种情况。任何点击我都会感激不尽。 (抱歉我的英文)。
答案 0 :(得分:1)
首先 - 如果Employee.ProjectList
只包含一个项目,那么请考虑不使用集合来保存此项目。
查询是:
var employees = Projects.Where(p => p.EmployeeList.Any(e => e.PersonID == id))
.SelectMany(p => p.EmployeeList)
.Where(e => e.PersonID != id)
.Distinct();
更新:查询语法中没有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();