2010-08-06 4 views
1

:부모의 어린이를 검색 []이 수업을 감안할 때

public class Parent 
{ 
    public Child[] Children {get;set;} 
} 

그리고이 배열 :

Parent[] parents; 

가 어떻게 모든 부모의 배열에서 아이들을 검색 할 수 있습니다 Linq에 또는 다른 뭔가를 사용하여 ? 이것은 나쁨으로 보입니다.

IList<Child> children = new List<Child>(); 
foreach(var parent in parents) 
    children.AddRange(parent.Children); 

아니면 그렇게 나쁘지 않습니까? :-)

답변

9

이 시도 :

parents.SelectMany(p => p.Children).ToArray() 
+0

빙고 방고, SelectMany는 핸디 dandiest 중 하나입니다 linq의 부분. –

+0

그는 목록을 원합니다. List.AddRange (parents.SelectMany ...) –

+1

@Joel Etherton : 또는 .ToArray() 대신에 .ToList() : –

1

난 당신이 질문에 제안 솔루션이 나쁜 생각하지 않습니다. 무슨 일이 벌어지고 있는지 이해하기 쉽고 읽기 쉽습니다. 당신이 이것을 최적화 할 필요가있는 어떤 이유가 없다면, 나는 그 어떤 결함도 보지 못합니다. 당신이 정말 Linq에 사용하려는 경우

, 그건 또 다른 이야기 (완벽하게 유효한 내 의견으로는 - Linq에와 더 많은 경험/연습, 더 나은)