Create Dictionary(of Dictionary) using Grouping in Linq

前端 未结 4 1174
星月不相逢
星月不相逢 2021-01-03 14:07

I know I could do this with loops (as a matter of fact, I currently am, but I am trying to learn / imporve my Linq skills and i also hope it will provide a more efficent sol

4条回答
  •  情歌与酒
    2021-01-03 14:45

    I only C#, not VB. Apologies in advance.

    Let's start by making a single list of anonymous objects with properties teacher, sex, name:

    var singleList = lstTeachers
      .Zip(lstStudentsSex, (teacher, sex) => new {teacher, sex})
      .Zip(lstStudentName, (x,name) => new {x.teacher, x.sex, name})
    

    Now we can turn this into a Dictionary of Dictionaries:

    singleList
      .GroupBy(x => x.teacher)
      .ToDictionary(
           g => g.Key, 
           g => g.ToDictionary(x => x.sex, x => x.name))
    

    See @nawfal's for a corrected version of my code.

提交回复
热议问题