class AgeClass
{
string[] Names {get;set;}
int Age {get;set;}
}
...
IEnumerable<AgeClass> myList = ...; // a few instances of AgeClass
现在我想(从我的列表中)得到一个
IEnumerable<KeyValuePair<string,int>>
有一对姓名和年龄。如何轻松做到这一点?
myList.SelectMany(
x=> x.Names.Select(
z => new KeyValuePair<string,int>(z,x.Age)));
请注意,您必须知道 linq 正在创建一个查询 - 每次您枚举此集合时,都会根据myList
. 要删除此效果,只需添加.ToList()
到此行的末尾。
使用查询 linq 语法:
var result = from el in myList
from n in el.Names
select new KeyValuePair<string, int>(n, el.Age);