2010-03-24 26 views
5

Kimliklerimin aynı değerde olmamam gerektiğini biliyorum. Bu sadece hayali, yani gözden kaçırmayın.Lambda ifadesini kullanarak nesnelerin bir listesini nasıl filtreleyebilirim?

Ben:

 
-- Id: 1, Name: Honda 
-- Id: 1, Name: Nissan 

sorun daha filtreleme geçerli:

List<Car> carList = new List<Car>(); 
carList.Add(new Car() { id = 1, name = "Honda" }); 
carList.Add(new Car() { id = 2, name = "Toyota" }); 
carList.Add(new Car() { id = 1, name = "Nissan" }); 

Ben 1.

Beklenen Sonuç bir kimliğe sahip tüm araçları almak için Lambda Expression kullanmak istiyorum Yabancı bir tuşa dayalı bir nesne listesi.

cevap

15

Kullanım LINQ deneyin: List<T>.FindAll kullanma

IEnumerable<Car> matchingCars = carList.Where(car => car.id == 1); 

:

List<Car> matchingCars = carList.FindAll(car => car.id == 1); 

şahsen LINQ yaklaşım tercih ediyorum - derhal FindAll oysa, o tembel olduğuna dikkat tüm listeye bakar ve t ile yeni bir liste oluşturur o sonuçları.

+0

LINQ tercihine katılıyorum, önce temsili başlatılmış olsun veya olmasın karar vermeden önce kodun içeriğini bilmeniz gerekir .... –

+0

@Tim: Genellikle LINQ'yi bir ToList, daha sonra bir değerlendirme yapmak isteseydim, sadece tutarlılık için. FindAll, bazı durumlarda biraz daha basit olabilir, ancak bu sadece 'IEnumerale ' gerektiren bir kaynak olarak bir 'List ' seçeneğine sahip olmanızı sınırlandırır. –

4

bu

var match = carList.Where(x => x.id ==1); 
İlgili konular