Bird
Raised Fist0
C Sharp (C#)programming~20 mins

LINQ method syntax in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

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
Challenge - 5 Problems
🎖️
LINQ Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this LINQ method syntax code?
Consider the following C# code using LINQ method syntax. What will be printed to the console?
C Sharp (C#)
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var result = numbers.Where(n => n % 2 == 0).Select(n => n * n);
foreach(var num in result) {
    Console.Write(num + " ");
}
A2 4
B1 9 25
C4 16
D1 2 3 4 5
Attempts:
2 left
💡 Hint
Think about which numbers are even and what happens to them in the Select step.
🧠 Conceptual
intermediate
1:30remaining
Which LINQ method syntax expression counts elements greater than 10?
You have a list of integers. Which of the following LINQ method syntax expressions correctly counts how many elements are greater than 10?
Anumbers.Select(n => n > 10).Count()
Bnumbers.Count(n => n > 10)
Cnumbers.Where(n => n > 10).Count()
Dnumbers.Count().Where(n => n > 10)
Attempts:
2 left
💡 Hint
Count can take a condition directly or you can filter first then count.
🔧 Debug
advanced
2:00remaining
What error does this LINQ method syntax code produce?
Examine the code below. What error will it cause when compiled or run?
C Sharp (C#)
var words = new List<string> { "apple", "banana", "cherry" };
var result = words.Select(word => word.Length > 5 ? word : );
foreach(var w in result) {
    Console.WriteLine(w);
}
AInvalidOperationException: Sequence contains no elements
BNullReferenceException at runtime
CNo error, prints all words
DSyntaxError: Missing expression after ':' in ternary operator
Attempts:
2 left
💡 Hint
Look carefully at the ternary operator syntax inside Select.
Predict Output
advanced
2:30remaining
What is the output of this LINQ method syntax with grouping?
Given the code below, what will be printed to the console?
C Sharp (C#)
var fruits = new List<string> { "apple", "apricot", "banana", "blueberry", "cherry" };
var groups = fruits.GroupBy(f => f[0]);
foreach(var group in groups) {
    Console.Write(group.Key + ":");
    Console.WriteLine(string.Join(",", group));
}
A
a:apple,apricot
b:banana,blueberry
c:cherry
B
apple:apricot
banana:blueberry
cherry:
C
a:apple
apricot
b:banana
blueberry
c:cherry
D
a:apple,banana
b:apricot,blueberry
c:cherry
Attempts:
2 left
💡 Hint
GroupBy groups by the first letter of each fruit.
Predict Output
expert
3:00remaining
What is the value of 'result' after this LINQ method syntax chain?
Analyze the code below. What is the value of the variable 'result' after execution?
C Sharp (C#)
var data = new List<int> { 3, 6, 9, 12, 15 };
var result = data.Aggregate(1, (acc, val) => val % 3 == 0 ? acc * val : acc);
A29160
B0
C1
D45
Attempts:
2 left
💡 Hint
Aggregate starts with 1 and multiplies values divisible by 3.

Practice

(1/5)
1. What does the LINQ method Where do in method syntax?
easy
A. Transforms each item in a collection
B. Counts the number of items in a collection
C. Sorts the collection in ascending order
D. Filters a collection based on a condition

Solution

  1. Step 1: Understand the purpose of Where

    The Where method is used to select only those items from a collection that satisfy a given condition.
  2. Step 2: Differentiate from other LINQ methods

    Unlike Select which transforms items, or OrderBy which sorts, Where filters items based on a predicate.
  3. Final Answer:

    Filters a collection based on a condition -> Option D
  4. Quick Check:

    Where = Filter [OK]
Hint: Remember: Where filters items by condition [OK]
Common Mistakes:
  • Confusing Where with Select (transformation)
  • Thinking Where sorts the collection
  • Assuming Where counts items
2. Which of the following is the correct syntax to select all even numbers from a list numbers using LINQ method syntax?
easy
A. numbers.Select(n => n % 2 == 0)
B. numbers.Where(n => n % 2 == 0)
C. numbers.OrderBy(n => n % 2 == 0)
D. numbers.Count(n => n % 2 == 0)

Solution

  1. Step 1: Identify method for filtering

    To get only even numbers, we need to filter the list, which is done by Where.
  2. Step 2: Check lambda expression correctness

    The lambda n => n % 2 == 0 correctly tests if a number is even.
  3. Final Answer:

    numbers.Where(n => n % 2 == 0) -> Option B
  4. Quick Check:

    Filter even numbers = Where with condition [OK]
Hint: Use Where for filtering with a condition [OK]
Common Mistakes:
  • Using Select instead of Where for filtering
  • Using OrderBy which sorts, not filters
  • Using Count which returns a number, not a collection
3. What is the output of the following code?
var numbers = new List<int> {1, 2, 3, 4, 5};
var result = numbers.Where(n => n > 3).Select(n => n * 2).ToList();
Console.WriteLine(string.Join(", ", result));
medium
A. 1, 2, 3, 4, 5
B. 4, 6, 8, 10
C. 8, 10
D. 2, 4, 6, 8, 10

Solution

  1. Step 1: Filter numbers greater than 3

    The Where method selects numbers 4 and 5 from the list.
  2. Step 2: Multiply filtered numbers by 2

    The Select method transforms 4 to 8 and 5 to 10.
  3. Final Answer:

    8, 10 -> Option C
  4. Quick Check:

    Filter >3 then double = 8, 10 [OK]
Hint: Filter first, then transform with Select [OK]
Common Mistakes:
  • Applying Select before Where (wrong order)
  • Including numbers not greater than 3
  • Printing original list instead of result
4. Identify the error in this LINQ method syntax code:
var words = new List<string> {"apple", "banana", "cherry"};
var result = words.Where(w => w.Length > 5).Select(w => w.ToUpper);
Console.WriteLine(string.Join(", ", result));
medium
A. Missing parentheses after ToUpper method
B. Where method should be Select
C. Cannot use string.Join with LINQ
D. Lambda expression syntax is incorrect

Solution

  1. Step 1: Check usage of ToUpper method

    The code uses w.ToUpper without parentheses, but ToUpper is a method and needs ().
  2. Step 2: Confirm other parts are correct

    The Where and Select methods and lambda syntax are correct; string.Join works with IEnumerable.
  3. Final Answer:

    Missing parentheses after ToUpper method -> Option A
  4. Quick Check:

    Method calls need () [OK]
Hint: Remember to add () after method names like ToUpper [OK]
Common Mistakes:
  • Forgetting parentheses on method calls
  • Confusing Where and Select roles
  • Thinking string.Join can't handle LINQ results
5. Given a list of students with their names and scores:
var students = new List<(string Name, int Score)>
{
    ("Alice", 85), ("Bob", 92), ("Charlie", 78), ("Diana", 92)
};
Which LINQ method syntax query returns a dictionary with scores as keys and list of student names who have that score as values?
hard
A. students.GroupBy(s => s.Score).ToDictionary(g => g.Key, g => g.Select(s => s.Name).ToList())
B. students.ToDictionary(s => s.Score, s => s.Name)
C. students.Select(s => new { s.Score, s.Name }).ToDictionary()
D. students.Where(s => s.Score > 80).ToDictionary(s => s.Name, s => s.Score)

Solution

  1. Step 1: Group students by their score

    The GroupBy method groups students sharing the same score.
  2. Step 2: Convert groups to dictionary with score keys and list of names

    ToDictionary uses group key as dictionary key and selects student names as list for values.
  3. Final Answer:

    students.GroupBy(s => s.Score).ToDictionary(g => g.Key, g => g.Select(s => s.Name).ToList()) -> Option A
  4. Quick Check:

    GroupBy + ToDictionary for grouped lists [OK]
Hint: Use GroupBy then ToDictionary for grouping collections [OK]
Common Mistakes:
  • Using ToDictionary directly without grouping (loses duplicates)
  • Swapping keys and values in dictionary
  • Using Select without grouping for this task