2014-10-07 2 views
-3

내 데이터를 선택하는 방법입니다 : 우리는 LINQ에 의해 ParentId = 0이있는 경우LINQ - 하위 쿼리

+-----+--------+-----------+ 
| Id | Name | ParentId | 
+-----+--------+-----------+  
| 1 | A |  0  | 
| 2 | B |  0  | 
| 3 | C |  1  | 
+-----+--------+-----------+ 

가 어떻게 C을받을 수 있나요?

+3

'.Where (x => x.ParentId! = 0)'? Heck,'.Last()'가 샘플 세트에서 작동합니다. 시도한 것은 무엇이고 작동하지 않는 것은 무엇입니까? – David

+0

하위 쿼리를 사용하고 싶습니다. 왜냐하면 .Where (x => x.ParentId! = 0)가 괜찮지 않기 때문입니다. parentId = 2 인 다른 레코드가있는 경우 C –

+0

을 얻을 수 없습니다. 그런 다음 원하는 레코드를 어떻게 식별합니까 *? 아무도 여기서 대답 할 수는 없습니다. 당신이 구축하고있는 시스템의 논리에 대한 문제입니다. 찾고자하는 것을 식별 할 수있는 수단이 있으면 데이터를 필터링 할 절이 있습니다. "하위 쿼리 사용"문은 원하는 데이터를 얻을 수있는 마법을 캐스팅하려는 시도처럼 들립니다. 논리적으로 데이터를 식별 할 수있는 방법이 없어도 의미가 없습니다. – David

답변

0

"카테고리"가 컬렉션 이름이라고 가정하면 이것이 필요한 것이라고 생각합니다.

var parentCategoryIds = Collections.Where(c => c.ParentId == 0).Select(c => c.Id); 

var results = Collections.Where(c => parentCategoryIds.Contains(c.ParentId)); 

그리고 당신은 이름을 얻으려면, 당신은

var names = results.Select(r => r.Name); 

이 세 문장 하나 LINQ 문에 기록 할 수 있지만, 나는 명확성을 위해 이런 짓을 할 수 있습니다.