📖 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
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.
Step 2: Differentiate from other LINQ methods
Unlike Select which transforms items, or OrderBy which sorts, Where filters items based on a predicate.
Final Answer:
Filters a collection based on a condition -> Option D
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
Step 1: Identify method for filtering
To get only even numbers, we need to filter the list, which is done by Where.
Step 2: Check lambda expression correctness
The lambda n => n % 2 == 0 correctly tests if a number is even.
Final Answer:
numbers.Where(n => n % 2 == 0) -> Option B
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
Step 1: Filter numbers greater than 3
The Where method selects numbers 4 and 5 from the list.
Step 2: Multiply filtered numbers by 2
The Select method transforms 4 to 8 and 5 to 10.
Final Answer:
8, 10 -> Option C
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
Step 1: Check usage of ToUpper method
The code uses w.ToUpper without parentheses, but ToUpper is a method and needs ().
Step 2: Confirm other parts are correct
The Where and Select methods and lambda syntax are correct; string.Join works with IEnumerable.
Final Answer:
Missing parentheses after ToUpper method -> Option A
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
Step 1: Group students by their score
The GroupBy method groups students sharing the same score.
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.
Final Answer:
students.GroupBy(s => s.Score).ToDictionary(g => g.Key, g => g.Select(s => s.Name).ToList()) -> Option A
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
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.