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

LINQ method syntax in C Sharp (C#) - Mini Project: Build & Apply

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
Filter and Select with LINQ Method Syntax
📖 Scenario: You work in a bookstore and have a list of books with their prices. You want to find all books that cost less than $20 and get their titles.
🎯 Goal: Build a C# program that uses LINQ method syntax to filter books priced below $20 and select their titles.
📋 What You'll Learn
Create a list of books with exact titles and prices
Create a price limit variable
Use LINQ method syntax with Where and Select to filter and select book titles
Print the filtered book titles
💡 Why This Matters
🌍 Real World
Filtering and selecting data from collections is common in apps like online stores, libraries, and inventory systems.
💼 Career
Knowing LINQ method syntax helps you write clear and efficient queries in C# for data processing tasks.
Progress0 / 4 steps
1
Create the list of books
Create a list of tuples called books with these exact entries: ("C# Basics", 15.99), ("LINQ in Action", 25.50), ("ASP.NET Core", 18.75), ("Entity Framework", 22.30), ("Clean Code", 19.99).
C Sharp (C#)
Hint

Use new List<(string Title, double Price)> { ... } to create the list.

2
Set the price limit
Create a double variable called priceLimit and set it to 20.0.
C Sharp (C#)
Hint

Use double priceLimit = 20.0; to set the limit.

3
Filter and select book titles using LINQ method syntax
Create a variable called affordableBooks that uses LINQ method syntax on books to filter books where Price < priceLimit using Where, then select only the Title using Select.
C Sharp (C#)
Hint

Chain Where and Select methods with lambda expressions.

4
Print the filtered book titles
Use a foreach loop to print each title in affordableBooks on its own line.
C Sharp (C#)
Hint

Use foreach (var title in affordableBooks) { Console.WriteLine(title); } to print.

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