13

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

class LabourHours
{
    public int ID {get;set;}
    public int EmployeeID {get;set;}
    public int HoursWorked {get;set;}
}

我该怎么办?我确定以前有人问过这个问题,但我在这里找不到类似的东西。我发现的最接近的方法是按 UserID 对记录进行分组,这不是我需要的——我需要实际的记录。

4

2 回答 2

25

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

var result = list.Where(x => employees.Contains(x.EmployeeID));
于 2013-08-22T15:17:12.757 回答
0

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

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

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

于 2021-04-29T16:37:45.227 回答