根据其他列表筛选列表

时间:2015-06-10 07:27:05

标签: list filter compare

我有两个基于其他对象的列表。

List<Emyployee> emyployeeList;
List<Display> displayEmployeeList;

他们都有员工的身份证,但第二个列表中只有少数人。 我想过滤employeeList,我拥有不在displayEmployeeList中的所有id。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果displayEmployeeList多个项目,您会发现创建一种索引非常有用(就像RDBMS一样):

  // let id be integer
  HashSet<int> ids = new HashSet<int>(displayEmployeeList
    .Select(item => item.id)
  );

  // Just Linq where
  var result = emyployeeList
    .Where(item => !ids.Contains(item.id));

答案 1 :(得分:0)

您可以使用Zip扩展方法,并执行以下操作:

employeeList.Zip(displayEmployeeList,(employee,display) => 
             {
                if(employee.Id != display.Id)
                  return employee;
             });