Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the GroupBy method do in C#?
It groups elements of a collection based on a key you specify, creating groups of items that share the same key.
Click to reveal answer
beginner
How do you access the key of each group in a GroupBy result?
Each group has a Key property that holds the value used to group the elements.
Click to reveal answer
intermediate
What type does GroupBy return in C#?
It returns an IEnumerable<IGrouping<TKey, TElement>>, where each IGrouping represents a group of elements sharing the same key.
Click to reveal answer
intermediate
Can you use GroupBy to group by multiple properties?
Yes, by creating an anonymous type as the key, like GroupBy(x => new { x.Prop1, x.Prop2 }).
Click to reveal answer
beginner
What is a simple example of using GroupBy to group a list of words by their first letter?
Example:
var groups = words.GroupBy(w => w[0]); foreach (var group in groups) { Console.WriteLine($"Words starting with {group.Key}:"); foreach (var word in group) Console.WriteLine(word); }
Click to reveal answer
What does the GroupBy method return?
AIEnumerable of groups with a key and elements
BA single grouped object
CA sorted list
DA dictionary with keys and values
✗ Incorrect
GroupBy returns an IEnumerable<IGrouping<TKey, TElement>>, which is a collection of groups, each with a key and the elements in that group.
How do you specify the grouping key in GroupBy?
ABy filtering elements
BBy sorting the collection first
CBy passing a function that returns the key for each element
DBy converting elements to strings
✗ Incorrect
You provide a function (lambda) that tells GroupBy how to get the key from each element.
Which property gives you the key of a group in GroupBy?
AValue
BKey
CGroup
DName
✗ Incorrect
Each group has a Key property representing the grouping key.
Can GroupBy group by multiple properties?
AYes, but only with a tuple
BNo, only one property is allowed
CNo, you must call <code>GroupBy</code> multiple times
DYes, by using an anonymous type as the key
✗ Incorrect
You can group by multiple properties by creating an anonymous type as the key, like GroupBy(x => new { x.Prop1, x.Prop2 }).
What is the type of each element inside a group returned by GroupBy?
AThe original element type from the source collection
BA string representing the key
CAn integer index
DA dictionary entry
✗ Incorrect
Each group contains elements of the same type as the original collection.
Explain how the GroupBy method works and how you can use it to group items in a list.
Think about how you would sort items into labeled boxes based on a shared feature.
You got /4 concepts.
Describe how to iterate over groups created by GroupBy and access both the group key and the items inside.
Imagine opening each labeled box and looking at the items inside.
You got /3 concepts.
Practice
(1/5)
1. What does the GroupBy method do in C#?
easy
A. It sorts elements in ascending order.
B. It groups elements of a collection based on a key selector.
C. It filters elements based on a condition.
D. It removes duplicate elements from a collection.
Solution
Step 1: Understand the purpose of GroupBy
The GroupBy method organizes elements by a key, creating groups of items sharing the same key.
Step 2: Compare with other operations
Sorting arranges order, filtering selects items, and removing duplicates eliminates repeats, which are different from grouping.
Final Answer:
It groups elements of a collection based on a key selector. -> Option B
Quick Check:
GroupBy = grouping by key [OK]
Hint: GroupBy always creates groups by a key, not sorting or filtering [OK]
Common Mistakes:
Confusing GroupBy with sorting methods
Thinking GroupBy filters items
Assuming GroupBy removes duplicates
2. Which of the following is the correct syntax to group a list of strings by their first character using LINQ in C#?
easy
A. var groups = list.GroupBy(s => s[0]);
B. var groups = list.GroupBy(s => s.Length);
C. var groups = list.GroupBy(s => s.ToUpper());
D. var groups = list.GroupBy(s => s.Substring(1));
Solution
Step 1: Identify grouping key for first character
Grouping by the first character means using s => s[0] as the key selector.
Step 2: Check other options
Grouping by length, uppercase string, or substring starting at index 1 does not group by first character.
Final Answer:
var groups = list.GroupBy(s => s[0]); -> Option A
Quick Check:
First char key = s[0] [OK]
Hint: Use s => s[0] to group by first character [OK]
Common Mistakes:
Using substring starting at 1 instead of 0
Grouping by string length instead of character
Using ToUpper() changes case but not grouping key
3. What is the output of the following C# code?
var numbers = new[] {1, 2, 3, 4, 5, 6};
var groups = numbers.GroupBy(n => n % 2 == 0 ? "Even" : "Odd");
foreach (var group in groups) {
Console.WriteLine($"{group.Key}: {string.Join(",", group)}");
}
medium
A. 1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
B. Even: 2,4,6
Odd: 1,3,5
C. Odd: 1,3,5
Even: 2,4,6
D. Even: 1,3,5
Odd: 2,4,6
Solution
Step 1: Understand grouping key logic
Numbers are grouped by whether they are even or odd using the key "Even" or "Odd".
Step 2: Determine group contents and order
Group "Odd" contains 1,3,5; group "Even" contains 2,4,6. The foreach prints groups in order they appear, which is "Odd" then "Even".
Final Answer:
Odd: 1,3,5
Even: 2,4,6 -> Option C
Quick Check:
Group keys "Odd" then "Even" with correct items [OK]
Hint: GroupBy preserves order of first occurrence of keys [OK]
Common Mistakes:
Assuming groups print in alphabetical order
Mixing up even and odd groups
Expecting separate groups for each number
4. Identify the error in this C# code that tries to group words by their length:
var words = new List<string> {"apple", "bat", "car", "dog"};
var groups = words.GroupBy(word => word.Length);
foreach (var group in groups)
Console.WriteLine(group.Key + ": " + group.ToString());
medium
A. Using group.ToString() instead of joining group elements.
B. GroupBy cannot be used on List<string>.
C. Missing semicolon after GroupBy statement.
D. word.Length is not a valid key selector.
Solution
Step 1: Check GroupBy usage
GroupBy on List<string> with word.Length is valid syntax and logic.
Step 2: Analyze output statement
Using group.ToString() prints the type name, not the grouped items. We should join group elements to display them.
Final Answer:
Using group.ToString() instead of joining group elements. -> Option A
Quick Check:
Print grouped items by joining, not ToString() [OK]
Hint: Join group elements to print, not group.ToString() [OK]
Common Mistakes:
Thinking GroupBy can't be used on lists
Forgetting to join group elements for display
Misunderstanding word.Length as key selector
5. Given a list of employees with properties Name and Department, how would you use GroupBy to create a dictionary where keys are departments and values are lists of employee names?
hard
A. var dict = employees.GroupBy(e => e.Name).ToDictionary(g => g.Key, g => g.Select(e => e.Department).ToList());
B. var dict = employees.ToDictionary(e => e.Department, e => e.Name);
C. var dict = employees.GroupBy(e => e.Department).ToList();
D. var dict = employees.GroupBy(e => e.Department).ToDictionary(g => g.Key, g => g.Select(e => e.Name).ToList());
Solution
Step 1: Group employees by Department
Use GroupBy with key selector e => e.Department to group employees by their department.
Step 2: Convert groups to dictionary with employee names list
Use ToDictionary with key as group.Key (department) and value as list of employee names using g.Select(e => e.Name).ToList().
Final Answer:
var dict = employees.GroupBy(e => e.Department).ToDictionary(g => g.Key, g => g.Select(e => e.Name).ToList()); -> Option D
Quick Check:
GroupBy + ToDictionary with Select names = correct [OK]
Hint: GroupBy then ToDictionary with Select for values list [OK]