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选择所有匹配数组的项目

您可以使用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