2
class AgeClass
{
    string[] Names {get;set;}
    int Age {get;set;}
}

...

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

现在我想(从我的列表中)得到一个

IEnumerable<KeyValuePair<string,int>> 

有一对姓名和年龄。如何轻松做到这一点?

4

2 回答 2

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

请注意,您必须知道 linq 正在创建一个查询 - 每次您枚举此集合时,都会根据myList. 要删除此效果,只需添加.ToList()到此行的末尾。

于 2012-08-23T08:45:26.927 回答
1

使用查询 linq 语法:

var result = from el in myList
             from n in el.Names
               select new KeyValuePair<string, int>(n, el.Age);
于 2012-08-23T08:53:53.487 回答