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

... 

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

現在我想(出myList中的)一個如何將IEnumerable平坦2值?

IEnumerable<KeyValuePair<string,int>> 

與名字和年齡的一對。如何輕鬆做到這一點?

+6

我必須說,我沒想到謝爾頓·庫珀有這樣簡單的問題:-) – mtijn

回答

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

請注意,您必須知道LINQ是創建一個查詢 - 每次枚舉該集合新會的基礎上myList當前狀態來創建。要刪除此效果,只需在該行的末尾添加.ToList()即可。

1

使用LINQ查詢語法:

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