Linq选择所有项目匹配数组

时间:2013-08-22 15:16:15

标签: c# linq

我有一个类型IEnumerable<Objects.LabourHours>的数据集合,其中包含各种员工的人工记录。我希望过滤列表并仅返回所选员工的记录,这些记录由包含int[] employees的{​​{1}}列表指定。

EmployeeID

我该怎么做?我确信之前已经问过,但我在这里找不到类似的东西。我发现最接近的是用UserID对记录进行分组,这不是我需要的 - 我需要实际的记录。

2 个答案:

答案 0 :(得分:21)

您可以使用Where方法使用LINQ Contains过滤列表:

var result = list.Where(x => employees.Contains(x.EmployeeID));

答案 1 :(得分:0)

如果希望结果保留 employees 数组的顺序,可以在数组上使用 Select。从文档中可以看出,它“将序列的每个元素投影到一个新形式中”,这基本上就是你在这种情况下想要做的。

var result = employees.Select(e => labourHours.First(l => l.EmployeeID == e));

如果所有 FirstOrDefault 不一定都有关联的 employees 条目,请使用 labourHours

相关问题