LINQ实现建议 - 如何将一个列表中的值添加到另一个列表

时间:2010-08-05 19:01:21

标签: c# linq

我需要一些关于如何实现以下内容的LINQ建议(甚至一般建议):

基本上,我有3个实体:项目 - 员工项目 - 员工(分别为1到多人和多对1关系),即员工可以分配到多个项目,项目可以有很多员工和我们所有的住房在EmployeeProjects中。

我想选择一些员工,看看他们是否存在于某个项目中,如果他们不存在于该项目中,我想添加它们。

到目前为止,我正在考虑这样的事情(任何和所有建议都赞赏!):

var existingEmployees = new List<string>();

foreach(var employeeProject in _project.EmployeeProjects)
{
    if (employeeProject.Employee != null) 
        existingEmployees .Add(employeeProject.Employee.EmployeeId);
}

foreach(var employee in GetSelectedEmployees())
{
    if (!existingEmployees.Contains(employee.EmployeeId))
    {
        _project.AddEmployee(employee);
    }
}

1 个答案:

答案 0 :(得分:3)

foreach( var employee in GetSelectedEmployees()
                         .Except(_project.EmployeeProjects.Employees))
     _project.AddEmployee(employee); 

现在,如果Project有AddEmployees(IEnumerable<Employee>)方法:

_project.AddEmployees(GetSelectedEmployees()
                         .Except(_project.EmployeeProjects.Employees));