score:2

Accepted answer

if you don't need console.writeline(...) your code can be summarized with linq :

list<employeeteldir> teldir = (from empl in lclemployees
                               group empl by empl.name into employeegroup
                               select new employeeteldir
                               {
                                   name = employeegroup.key,
                                   phone = (from employee in employeegroup
                                           select employee.phone).tolist()  // the tolist() is the holy grail of the linq queries
                               }).tolist();

for the inverted operation:

list<employeelocalregister> inverse = (from employeeteldir in teldir
                                       from phone in employeeteldir.phone  // doing 2 from ... in ... successively corresponds to the selectmany() linq method
                                       select new employeelocalregister
                                       {
                                           name = employeeteldir.name,
                                           phone = phone
                                       }).tolist();

score:0

the lambda way:

var teldir = lclemployees.groupby(e => e.name, 
                                  (n, p) => new employeeteldir 
                                            { 
                                              name = n, 
                                              phone = p.select(k => k.phone).tolist() 
                                            }).tolist();

Related Query

More Query from same tag