2013-08-22 13 views
11

Mam kolekcję danych typu IEnumerable<Objects.LabourHours> zawierającą dane dotyczące pracy dla różnych pracowników. Chcę filtrować listę i zwracać tylko rekordy dla wybranych pracowników, która jest określona przez listę int[] employees zawierającą EmployeeID s.Linq Zaznacz wszystkie elementy pasujące do tablicy

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

Jak to zrobić? Jestem pewna, że ​​już o to pytano, ale tutaj nie mogę znaleźć czegoś podobnego. Najbliższe, jakie znalazłem, polega na zgrupowaniu rekordów według identyfikatora użytkownika, który nie jest tym, czego potrzebuję - potrzebuję rzeczywistych rekordów.

Odpowiedz

17

można filtrować listy z LINQ Where użyciu Contains metodę:

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

hmm tak proste! Wszystkie znalezione przeze mnie rozwiązania były połączeniem funkcji .All() i .Any(), co spowodowało zgrupowaną wartość zwracaną zamiast poszczególnych elementów. Czy to tylko ja lub czy jest to zła droga w porównaniu do wszystkich innych operacji Linq? –

+0

@GavinCoates: Nie jest to zła droga, nie myśl, że jest skomplikowana –

Powiązane problemy