2013-08-22 39 views
11

Tôi có bộ sưu tập dữ liệu loại IEnumerable<Objects.LabourHours> chứa hồ sơ lao động cho nhiều nhân viên khác nhau. Tôi muốn lọc danh sách và chỉ trả lại các hồ sơ cho các nhân viên được chọn, được chỉ định theo danh sách int[] employees có chứa EmployeeID s.LINQ Chọn tất cả các mục phù hợp với mảng

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

Tôi sẽ làm như thế nào? Tôi chắc chắn điều này đã được hỏi trước nhưng tôi không thể tìm thấy bất cứ điều gì tương tự ở đây. Gần nhất tôi đã tìm thấy liên quan đến nhóm các hồ sơ của UserID, mà không phải là những gì tôi cần - Tôi cần các hồ sơ thực tế.

Trả lời

17

Bạn có thể lọc danh sách của bạn với LINQ Where sử dụng Contains phương pháp:

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

hmm đơn giản như vậy! Tất cả các giải pháp tôi tìm thấy trực tuyến là kết hợp của .All() và .Any() dẫn đến giá trị trả về được nhóm lại thay vì các mục riêng lẻ. Là nó chỉ cho tôi mặc dù hoặc là cách này sai vòng so với tất cả các hoạt động Linq khác? –

+0

@GavinCoates: Không đúng cách, đừng nghĩ phức tạp –

Các vấn đề liên quan