LINQ uses extension methods to add new features to collections without changing their original code. This makes it easy and clean to write queries on data.
Why LINQ depends on extension methods in C Sharp (C#)
public static ReturnType MethodName(this Type parameter, other parameters) { // method body }
The this keyword before the first parameter tells the compiler this is an extension method.
Extension methods must be inside a static class and be static themselves.
WordCount method to all strings.public static int WordCount(this string str) { return str.Split(' ').Length; }
Where is an extension method that filters the list to only even numbers.var numbers = new List<int> {1, 2, 3, 4}; var evenNumbers = numbers.Where(n => n % 2 == 0);
This program shows how an extension method WordCount adds a new feature to strings. It also uses LINQ's Where extension method to filter even numbers from a list.
using System; using System.Collections.Generic; using System.Linq; static class Extensions { public static int WordCount(this string str) { return str.Split(' ', StringSplitOptions.RemoveEmptyEntries).Length; } } class Program { static void Main() { string sentence = "Hello LINQ with extension methods"; Console.WriteLine($"Word count: {sentence.WordCount()}"); List<int> numbers = new() {1, 2, 3, 4, 5, 6}; var evenNumbers = numbers.Where(n => n % 2 == 0); Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers)); } }
Extension methods let LINQ add query features to many types like arrays, lists, and more.
Without extension methods, LINQ would need special syntax or new types to work.
Extension methods keep your code clean and easy to read.
LINQ uses extension methods to add query features to existing types without changing them.
Extension methods make code more readable and allow chaining of operations.
This approach keeps your code organized and flexible.
Practice
Solution
Step 1: Understand LINQ's design goal
LINQ aims to add query features to existing collections without changing their original code.Step 2: Role of extension methods
Extension methods allow adding new methods to existing types externally, enabling LINQ queries without modifying those types.Final Answer:
To add query capabilities to existing types without modifying them -> Option AQuick Check:
LINQ uses extension methods to extend types [OK]
- Thinking LINQ creates new classes for queries
- Believing extension methods replace existing methods
- Assuming LINQ compiles queries separately for speed
Solution
Step 1: Identify extension method syntax
An extension method must be static and have the first parameter preceded by 'this' keyword.Step 2: Check each option
public static int Sum(this IEnumerable<int> source) { ... } is static and uses 'this' on the first parameter, correct for extension methods.Final Answer:
public static int Sum(this IEnumerable<int> source) { ... } -> Option BQuick Check:
Extension method = static + 'this' parameter [OK]
- Omitting 'static' keyword
- Missing 'this' keyword on first parameter
- Making method non-static
var numbers = new List<int> {1, 2, 3};
var result = numbers.Where(n => n > 1).Count();
Console.WriteLine(result);Solution
Step 1: Understand the Where clause
It filters numbers greater than 1, so it keeps 2 and 3.Step 2: Count the filtered elements
There are 2 elements (2 and 3), so Count() returns 2.Final Answer:
2 -> Option DQuick Check:
Filtered count = 2 [OK]
- Counting all elements without filtering
- Confusing > with >=
- Assuming Count returns sum
var list = new List<string> {"a", "bb", "ccc"};
var result = list.Where(s => s.Length > 1).ToList();
Console.WriteLine(result);Solution
Step 1: Check LINQ method usage
Where and ToList() are valid extension methods on List<string>.Step 2: Understand Console.WriteLine behavior
Printing 'result' directly prints the type name, not the list elements.Final Answer:
Console.WriteLine prints the type name, not the list contents -> Option CQuick Check:
Printing list object shows type name [OK]
- Thinking ToList() is invalid
- Assuming Where is unavailable on List
- Forgetting to add using System.Linq
Solution
Step 1: Understand extension methods role
Extension methods add new methods externally without changing original class code.Step 2: Apply to custom collection
Defining static extension methods with 'this' parameter for the custom collection enables LINQ queries without modifying it.Step 3: Evaluate other options
Inheriting or rewriting requires source changes; adding methods inside class modifies it.Final Answer:
By defining static extension methods that accept the custom collection as 'this' parameter -> Option AQuick Check:
Extension methods extend without modifying class [OK]
- Thinking inheritance is required
- Assuming interface implementation is mandatory
- Trying to modify original class source
Ready to prove it?
Pass the test and this pattern moves unknown
