2010-03-24 5 views
5

나는 같은 값의 이드를 가져서는 안된다는 것을 알고있다. 이것은 단지 가상의 것이므로 간과해서는 안됩니다.람다 식을 사용하여 객체 목록을 필터링하는 방법은 무엇입니까?

나는이 :

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

이 문제는 더 필터링입니다 :

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" }); 

내가 1

예상 결과의 ID를 가진 모든 차량을 검색하는 람다 식을 사용하려면 외래 키에 기반한 객체 목록.

답변

15

사용 LINQ를보십시오 : List<T>.FindAll를 사용

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

:

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

나는 개인적으로 LINQ 접근 방식을 선호하는 것 - 바로 FindAll 반면, 그 게으른 있습니다 전체 목록을보고 t를 사용하여 새 목록을 작성합니다. 그는 결과를 얻는다.

+0

저는 LINQ 환경 설정에 동의하지 않습니다. 먼저 게으르다 초기화 할 것인지 결정하기 전에 코드의 컨텍스트를 알아야합니다. –

+0

@Tim : 저는 보통 LINQ를' ToList' 이후에 전화를 걸었 으면합니다. 어떤 경우에는 FindAll이 약간 더 간단 할 수 있습니다 만,'List '을'IEnumerale '만 요구하는 대신 소스로 제한합니다. –

4

var match = carList.Where(x => x.id ==1); 
관련 문제