using System.Collections.Generic;
public static void Main()
List<Employee> employees = GetEmployees().ToList();
IEnumerable<IGrouping<string, Employee>> groupedEmployees = employees
.SelectMany(employee => employee.Groups.Select(group => (employee, group)))
.GroupBy(pair => pair.group, pair => pair.employee);
foreach (IGrouping<string, Employee> group in groupedEmployees)
Console.WriteLine(group.Key);
foreach (Employee employee in group)
Console.WriteLine(employee.FirstName);
static IEnumerable<Employee> GetEmployees()
yield return new Employee { FirstName = "TestName1", LastName = "TestName1", Groups = new[] { "Group1", "Group2" } };
yield return new Employee { FirstName = "TestName2", LastName = "TestName2", Groups = new[] { "Group1", "Group3" } };
public string FirstName {get;set;}
public string LastName {get;set;}
public IEnumerable<string> Groups {get;set;}