Linq查询 - 不存在语句

时间:2014-04-12 16:25:04

标签: c# sql linq

我有课程:

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,我真的不知道如何处理这种情况。任何点击我都会感激不尽。 (抱歉我的英文)。

1 个答案:

答案 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();

更新:查询语法中没有DistinctAny的等效项,但这里的查询与上面的查询语法相同:

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();