Linq选择所有匹配数组的项目
本文关键字:数组 项目 选择 Linq | 更新日期: 2023-09-27 18:28:49
我有一个IEnumerable<Objects.LabourHours>
类型的数据集合,其中包含各种员工的劳动记录。我希望筛选列表并只返回选定员工的记录,该记录由包含EmployeeID
s的int[] employees
列表指定。
class LabourHours
{
public int ID {get;set;}
public int EmployeeID {get;set;}
public int HoursWorked {get;set;}
}
我该怎么做?我确信以前有人问过这个问题,但我在这里找不到类似的问题。我发现的最接近的是按UserID对记录进行分组,这不是我所需要的——我需要实际的记录。
您可以使用LINQ Where
使用Contains
方法过滤您的列表:
var result = list.Where(x => employees.Contains(x.EmployeeID));
如果希望结果保持employees
数组的顺序,可以在数组上使用Select
。从文档来看;将序列的每个元素投影成新的形式";,这基本上就是你在这种情况下想要做的。
var result = employees.Select(e => labourHours.First(l => l.EmployeeID == e));
如果所有employees
不一定都有关联的labourHours
条目,请使用FirstOrDefault
。