Grouping by property value and writing group members

Posted by Will S on Stack Overflow See other posts from Stack Overflow or by Will S
Published on 2012-11-20T03:27:04Z Indexed on 2012/11/20 5:00 UTC
Read the original article Hit count: 135

Filed under:
|
|
|
|

I need to group the following list by the department value but am having trouble with the LINQ syntax. Here's my list of objects:

 var people = new List<Person>
 { 
    new Person { name = "John", department = new List<fields> {new fields { name = "department", value = "IT"}}}, 
    new Person { name = "Sally", department = new List<fields> {new fields { name = "department", value = "IT"}}},
    new Person { name = "Bob", department = new List<fields> {new fields { name = "department", value = "Finance"}}},
    new Person { name = "Wanda", department = new List<fields> {new fields { name = "department", value = "Finance"}}},
 };

I've toyed around with grouping. This is as far as I've got:

var query = from p in people
            from field in p.department
            where field.name == "department"
            group p by field.value into departments
            select new
            {
                Department = departments.Key,
                Name = departments
            };

So can iterate over the groups, but not sure how to list the Person names -

foreach (var department in query)
{
    Console.WriteLine("Department: {0}", department.Department);
    foreach (var foo in department.Department)
    {
        // ??
    }
}

Any ideas on what to do better or how to list the names of the relevant departments?

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET