如何将IEnumerable平移2个值?

She*_*per 2 .net c# linq

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

...

IEnumerable<AgeClass> myList = ...; // a few instances of AgeClass
Run Code Online (Sandbox Code Playgroud)

现在我想得到(在myList之外)a

IEnumerable<KeyValuePair<string,int>> 
Run Code Online (Sandbox Code Playgroud)

有一对名字和年龄.怎么这么容易?

Raf*_*fal 12

myList.SelectMany(
     x=> x.Names.Select(
          z => new KeyValuePair<string,int>(z,x.Age)));
Run Code Online (Sandbox Code Playgroud)

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