2013-08-22 19 views
11

Çeşitli çalışanlar için çalışma kayıtlarını içeren IEnumerable<Objects.LabourHours> türünde bir veri koleksiyonum var. Listeyi filtrelemek ve EmployeeID s içeren int[] employees listesinden seçilen seçilmiş çalışanlar için yalnızca kayıtları geri göndermek istiyorum.Linq Tüm Öğeleri Karşılaştırma Dizisi Array

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

Bunun için nasıl giderim? Bunun daha önce sorulmuş olduğundan eminim ama burada benzer bir şey bulamıyorum. Bulduğum en yakın, kayıtları ihtiyacım olan değil UserID tarafından gruplandırmayı içerir - gerçek kayıtlara ihtiyacım var.

cevap

17

Sen Contains yöntemi kullanarak LINQ Where Listenizi filtreleyebilirsiniz:

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

hmm kadar basit! Çevrimiçi olarak bulduğum tüm çözümler, tek tek öğeler yerine gruplanmış bir dönüş değeriyle sonuçlanan .All() ve .Any() öğelerinin bir bileşimi idi. Sadece bana mı öyle geliyor yoksa tüm diğer Linq operasyonlarına kıyasla bu yanlış yol mu? –

+0

@GavinCoates: Yanlış şekilde değil, karmaşık düşünmeyin –

İlgili konular