0
0
C Sharp (C#)programming~20 mins

GroupBy operation in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
GroupBy Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of GroupBy with simple key selector
What is the output of this C# code snippet that groups numbers by their remainder when divided by 3?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        var numbers = new[] {1, 2, 3, 4, 5, 6};
        var groups = numbers.GroupBy(n => n % 3);
        foreach (var group in groups) {
            Console.WriteLine($"Key: {group.Key}, Values: {string.Join(",", group)}");
        }
    }
}
A
Key: 0, Values: 3,6
Key: 1, Values: 1,4
Key: 2, Values: 2,5
B
Key: 3, Values: 3,6
Key: 1, Values: 1,4
Key: 2, Values: 2,5
C
Key: 1, Values: 1,4
Key: 2, Values: 2,5
Key: 0, Values: 3,6
D
Key: 0, Values: 6,3
Key: 1, Values: 4,1
Key: 2, Values: 5,2
Attempts:
2 left
💡 Hint
Remember that GroupBy preserves the order of groups as they first appear in the source.
Predict Output
intermediate
2:00remaining
GroupBy with complex key and projection
What is the output of this C# code that groups words by their first letter and selects the count of words in each group?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        string[] words = {"apple", "apricot", "banana", "blueberry", "cherry"};
        var result = words.GroupBy(w => w[0])
                          .Select(g => new { Letter = g.Key, Count = g.Count() });
        foreach (var item in result) {
            Console.WriteLine($"{item.Letter}: {item.Count}");
        }
    }
}
A
a: 2
b: 2
c: 1
B
a: 2
b: 1
c: 2
C
a: 1
b: 2
c: 2
D
a: 2
b: 2
c: 2
Attempts:
2 left
💡 Hint
Count how many words start with each letter.
🔧 Debug
advanced
2:00remaining
Identify the error in GroupBy usage
What error does this C# code produce when run?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        var data = new[] {1, 2, 3, 4};
        var groups = data.GroupBy(n => n > 2 ? "High" : "Low");
        foreach (var group in groups) {
            Console.WriteLine(group.Key + ": " + group);
        }
    }
}
ASystem.InvalidOperationException at runtime
B
Output:
Low: System.Linq.Lookup`2+Grouping
High: System.Linq.Lookup`2+Grouping
CCompile-time error: Cannot convert from 'System.Linq.IGrouping<string,int>' to 'string'
D
Output:
Low: 1,2
High: 3,4
Attempts:
2 left
💡 Hint
Check what happens when you print a group object directly.
Predict Output
advanced
2:00remaining
GroupBy with ordering inside groups
What is the output of this C# code that groups people by age and orders names inside each group alphabetically?
C Sharp (C#)
using System;
using System.Linq;
using System.Collections.Generic;

class Person {
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program {
    static void Main() {
        var people = new List<Person> {
            new Person { Name = "John", Age = 30 },
            new Person { Name = "Jane", Age = 25 },
            new Person { Name = "Jake", Age = 30 },
            new Person { Name = "Jill", Age = 25 }
        };

        var groups = people.GroupBy(p => p.Age)
                           .Select(g => new {
                               Age = g.Key,
                               Names = g.OrderBy(p => p.Name).Select(p => p.Name)
                           });

        foreach (var group in groups) {
            Console.WriteLine($"Age: {group.Age}, Names: {string.Join(",", group.Names)}");
        }
    }
}
A
Age: 30, Names: Jake,John
Age: 25, Names: Jane,Jill
B
Age: 25, Names: Jill,Jane
Age: 30, Names: John,Jake
C
Age: 25, Names: Jane,Jill
Age: 30, Names: Jake,John
D
Age: 30, Names: John,Jake
Age: 25, Names: Jill,Jane
Attempts:
2 left
💡 Hint
Groups are ordered by first occurrence of keys, and names inside groups are alphabetically ordered.
Predict Output
expert
3:00remaining
GroupBy with nested grouping and flattening
What is the output of this C# code that groups numbers by even/odd, then groups each group by remainder mod 3, and finally flattens the results?
C Sharp (C#)
using System;
using System.Linq;

class Program {
    static void Main() {
        var numbers = Enumerable.Range(1, 6);
        var nestedGroups = numbers.GroupBy(n => n % 2 == 0 ? "Even" : "Odd")
                                  .Select(g => new {
                                      Parity = g.Key,
                                      SubGroups = g.GroupBy(x => x % 3)
                                  });

        foreach (var group in nestedGroups) {
            Console.WriteLine(group.Parity + ":");
            foreach (var subGroup in group.SubGroups) {
                Console.WriteLine($"  Remainder {subGroup.Key}: {string.Join(",", subGroup)}");
            }
        }
    }
}
A
2 :2 redniameR  
4 :1 redniameR  
6 :0 redniameR  
:nevE
 :2 redniameR  
3 :0 redniameR  
5,1 :1 redniameR  
:ddO
B
Odd:
  Remainder 1: 1,4
  Remainder 0: 3
  Remainder 2: 5
Even:
  Remainder 2: 2,5
  Remainder 0: 6
  Remainder 1: 4
C
Odd:
  Remainder 1: 1,5
  Remainder 0: 3
  Remainder 2: 
Even:
  Remainder 0: 6
  Remainder 1: 4
  Remainder 2: 2
D
Odd:
  Remainder 1: 1
  Remainder 0: 3
  Remainder 2: 5
Even:
  Remainder 2: 2
  Remainder 1: 4
  Remainder 0: 6
Attempts:
2 left
💡 Hint
Group numbers by even/odd, then inside each group by remainder mod 3, watch carefully the numbers in each subgroup.