2013-08-22 24 views
11

我有一個數據收集類型IEnumerable<Objects.LabourHours>包含各種員工的勞動記錄。我希望過濾列表並僅返回選定員工的記錄,該列表由包含EmployeeIDint[] employees列表指定。Linq選擇所有項目匹配數組

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

我該怎麼辦呢?我確信這已經被問過,但在這裏我找不到任何類似的東西。我發現的最接近的方式是用UserID對記錄進行分組,這不是我所需要的 - 我需要實際的記錄。

回答

17

可以使用Contains方法與LINQ Where過濾列表:

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

嗯這麼簡單!我在網上找到的所有解決方案都是.All()和.Any()的組合,這導致了分組返回值而不是單個項目。是不是隻是我,或者與其他所有Linq操作相比,這是否是錯誤的? –

+0

@GavinCoates:不是錯的方式,不要覺得複雜 –