Lambda Expressions in C# - Lambda Basics
Quick Answer
Lambda expressions in C# provide a concise way to represent anonymous methods using a clear syntax. They are commonly used for inline functions, especially with LINQ queries and delegates, enabling more readable and maintainable code.
Learning Objectives
- Explain the purpose of Lambda Basics in a practical learning context.
- Identify the main ideas, terms, and decisions involved in Lambda Basics.
- Apply Lambda Basics in a simple real-world scenario or practice task.
Introduction to Lambda Expressions
Lambda expressions are a powerful feature in C# that allow you to write inline anonymous functions.
They simplify code by reducing the need for separate method declarations, especially when working with delegates and LINQ.
Lambda expressions bring functional programming concepts into C#.
What is a Lambda Expression?
A lambda expression is an anonymous function that can contain expressions and statements.
It uses a concise syntax to define a function inline without a formal method declaration.
- Syntax: (input parameters) => expression or statement block
- Can be assigned to delegates or expression trees
- Commonly used with LINQ queries and event handlers
Basic Syntax of Lambda Expressions
The simplest lambda expression takes one or more input parameters and returns a value.
Parentheses around parameters are optional when there is only one parameter.
- Single parameter: x => x * x
- Multiple parameters: (x, y) => x + y
- No parameters: () => DateTime.Now
Using Lambda Expressions with Delegates
Lambda expressions can be assigned to delegate types, allowing inline method definitions.
This makes code more concise and readable compared to defining separate methods.
- Example delegate: Func<int, int>
- Assign lambda: Func<int, int> square = x => x * x;
- Invoke delegate: int result = square(5);
Lambda Expressions in LINQ
LINQ extensively uses lambda expressions to define query predicates and selectors.
This enables expressive and readable data querying in C#.
- Example: numbers.Where(n => n > 10)
- Lambda defines the filtering condition inline
- Simplifies complex queries with concise syntax
Expression Lambdas vs Statement Lambdas
Expression lambdas consist of a single expression and implicitly return its value.
Statement lambdas contain multiple statements enclosed in braces and require explicit return statements if returning a value.
- Expression lambda example: x => x + 1
- Statement lambda example: x => { int y = x + 1; return y; }
Practical Example
This example defines a lambda that squares a number and then invokes it.
This example uses a lambda expression to filter even numbers from an array using LINQ.
Examples
Func<int, int> square = x => x * x;
int result = square(5);
Console.WriteLine(result); // Output: 25This example defines a lambda that squares a number and then invokes it.
int[] numbers = { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach(var num in evenNumbers) {
Console.WriteLine(num); // Outputs 2 and 4
}This example uses a lambda expression to filter even numbers from an array using LINQ.
Best Practices
- Use lambda expressions to simplify delegate and event handler code.
- Prefer expression lambdas for simple operations for readability.
- Use statement lambdas when multiple statements or complex logic is needed.
- Name delegates clearly when assigning lambdas for better code clarity.
- Avoid overly complex lambda expressions; extract to named methods if needed.
Common Mistakes
- Forgetting parentheses around multiple parameters in a lambda.
- Using statement lambdas without explicit return statements when needed.
- Overusing lambdas for complex logic making code hard to read.
- Confusing lambda expressions with anonymous methods syntax.
- Ignoring delegate type compatibility when assigning lambdas.
Hands-on Exercise
Create a Lambda to Filter Strings
Write a lambda expression that filters a list of strings to only those that start with the letter 'A'.
Expected output: A filtered list containing only strings starting with 'A'.
Hint: Use the string method StartsWith inside the lambda.
Convert Anonymous Method to Lambda
Convert a given anonymous method delegate to an equivalent lambda expression.
Expected output: A lambda expression that behaves identically to the anonymous method.
Hint: Replace the delegate keyword and method body with lambda syntax.
Interview Questions
What is a lambda expression in C#?
InterviewA lambda expression is an anonymous function that can be used to create delegates or expression tree types, providing a concise syntax for inline functions.
How do lambda expressions differ from anonymous methods?
InterviewLambda expressions have a more concise syntax and support expression trees, whereas anonymous methods use a more verbose syntax and cannot be converted to expression trees.
When would you use a statement lambda instead of an expression lambda?
InterviewUse a statement lambda when the function body contains multiple statements or requires explicit control flow, such as loops or multiple return points.
MCQ Quiz
1. What is the correct syntax for a lambda expression that takes one integer parameter x and returns its square in C#?
Select one option to check your answer.
2. Which of the following statements about lambda expressions in C# is TRUE?
Select one option to check your answer.
3. What is the difference between expression lambdas and statement lambdas in C#?
Select one option to check your answer.
4. Consider the following lambda expression: (x, y) => x + y. What is true about the parentheses around the parameters?
Select one option to check your answer.
5. Which of the following is a common mistake when writing statement lambdas in C#?
Select one option to check your answer.
Key Takeaways
- Lambda expressions in C# provide a concise way to represent anonymous methods using a clear syntax.
- They are commonly used for inline functions, especially with LINQ queries and delegates, enabling more readable and maintainable code.
- Lambda expressions are a powerful feature in C# that allow you to write inline anonymous functions.
- They simplify code by reducing the need for separate method declarations, especially when working with delegates and LINQ.
- A lambda expression is an anonymous function that can contain expressions and statements.
Frequently Asked Questions
Can lambda expressions capture variables from the enclosing scope?
Yes, lambda expressions can capture and use variables from their enclosing scope, enabling closures.
Are lambda expressions the same as anonymous methods?
Lambda expressions are a more concise and flexible syntax introduced after anonymous methods, but both represent anonymous functions.
What delegate types can lambda expressions be assigned to?
Lambda expressions can be assigned to any compatible delegate type, such as Func<>, Action<>, or custom delegates.
Summary
Lambda expressions in C# provide a concise way to write inline anonymous functions.
They improve code readability and are widely used with delegates and LINQ.
Understanding the syntax and appropriate use cases is essential for modern C# programming.





