2012-08-23 2 views
2
class AgeClass 
{ 
    string[] Names {get;set;} 
    int Age {get;set;} 
} 

... 

IEnumerable<AgeClass> myList = ...; // a few instances of AgeClass 

는 지금은 이름과 나이의 한 쌍 (myList에에서)를2 값으로 IEnumerable을 플랫 화하는 방법은 무엇입니까?

IEnumerable<KeyValuePair<string,int>> 

을 싶어. 이 작업을 쉽게 수행하는 방법은 무엇입니까? 당신은 LINQ 쿼리를 만드는 것을 알고 있어야합니다

+6

내가 :-) 쉘든 쿠퍼는 쉬운 질문이 기대하지 않았다 말해야한다 – mtijn

답변

12
myList.SelectMany(
    x=> x.Names.Select(
      z => new KeyValuePair<string,int>(z,x.Age))); 

주 - 때마다 당신이 컬렉션 새가 myList의 현재 상태에 따라 생성됩니다 열거. 이 효과를 제거하려면이 줄의 끝에 .ToList()을 추가하기 만하면됩니다. 쿼리 LINQ 구문을 사용

1

:

var result = from el in myList 
      from n in el.Names 
       select new KeyValuePair<string, int>(n, el.Age); 
관련 문제