我有一个类型IEnumerable<Objects.LabourHours>
的数据集合,其中包含各种员工的人工记录。我希望过滤列表并仅返回所选员工的记录,这些记录由包含int[] employees
的{{1}}列表指定。
EmployeeID
我该怎么做?我确信之前已经问过,但我在这里找不到类似的东西。我发现最接近的是用UserID对记录进行分组,这不是我需要的 - 我需要实际的记录。
答案 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
。