Tech Talk A software developer on all things tech, and then some


Grouping Objects by using GroupBy using LINQ in C#

Ever need to group by a property and want to use LINQ to do so? Happened to me recently and decided to explore the really simple way to group objects using LINQ using GroupBy.

I started off by creating a simple class for a person and created a list

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleSandbox
    public class Person
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime Birthday { get; set; }

    public class GroupByExample
        public void GroupByDate()
            var people = new List<Person>
                new Person { PersonId = 1, FirstName = "John", LastName = "Doe", Birthday = new DateTime(1986, 12, 27) },
                new Person { PersonId = 2, FirstName = "Jane", LastName = "Smith", Birthday = new DateTime(1990, 6, 26) },
                new Person { PersonId = 3, FirstName = "Jamaal", LastName = "Charles", Birthday = new DateTime(1986, 12, 27)},
                new Person { PersonId = 4, FirstName = "Iman", LastName = "Shumpert", Birthday = new DateTime(1990, 6, 26)}

            // Our code will go here

Next add the following line

var groupedList = people.GroupBy(p => p.Birthday.Date);

This will group your list, people by the property Birthday. This command will result as IGrouping<TKey, TElement>. If this is your first time using this interface, imagine a Dictionary<key, value> where multiple values can be stored for each key. To iterate over the groupings, a couple of simple foreachs will work. In real scenarios, I would suggest maybe giving the resultSelector a try.

foreach (var group in groupedList)
    foreach (var person in group)
        Debug.WriteLine(string.Format("{0} {1}", person.FirstName, person.LastName));


Comments (0) Trackbacks (0)

No comments yet.

Leave a Reply

No trackbacks yet.

%d bloggers like this: