2013-05-01 3 views
0

나는 자동차 목록을 가지고 있습니다. 모든 자동차에는 승객 명단이 있습니다.LINQ를 사용하여 개체 트리에서 특정 항목 찾기

사회 보장 번호가 999-99-9999 인 승객이있는 차량을 찾으려면 어떻게해야합니까?

이것은 내가 얻은 것입니다.

var Passenger= Cars.SelectMany(c => c.Passengers).Where(p => p.SSN == "999-99-9999"); 

이렇게하면 승객이됩니다. 하지만이 승객에 차를 원하는

+4

노출하는 속성을 노출 있다고 가정 해 봅시다 [당신이 시도 무엇?] (HTTP : //mattgemmell.com/2008/12/08/what-have-you-tried/) –

+2

그것은 당신이 Car와 Passenger 객체를 어떻게 구성했는지, 그리고 그것들이 어떻게 관련되어 있는지에 달려 있습니다. 게시 할 수 있습니까? 그리고 Linq가 그들을 파싱하도록 도와 드리겠습니다. –

답변

4

당신은이 같은 쿼리를 작성할 수 있습니다. 당신이 승객을 가지고 하나의 차를 원하는 경우

var selectedCars = cars.Where(c => c.Passengers.Any(p => p.SSN == "999-99-9999")); 

, 당신은 FirstOrDefault()

var car = cars.Where(c => c.Passengers.Any(p => p.SSN == "999-99-9999")) 
       .FirstOrDefault(); 
을 사용할 수 있습니다

자동차가없는 경우 null (또는 Car가 값 유형 인 경우 기본값)을 반환합니다.

+0

'FristOrDefault' 제안, 그런 차가 없다면 어떻게 될지 언급해야합니다. –

2

의 당신이 변수 List<Car> cars

Car

List<Passenger> Passengers

Passenger이 속성 string SSN

var p = cars.Where(s => s.Passengers.Any(p => p.SSN == "999-99-9999")) 
+0

내가 왜 downvoted인지 궁금하네요? – Matthew

+0

아마 마지막 문장의 문법 때문에 –

+0

권자, 명백한 오타 때문에 downvoted? 결정된. – Matthew

관련 문제