📖 Scenario: You are working on a small program that processes a list of numbers. You want to use simple functions to perform calculations on these numbers.
🎯 Goal: Learn how to write expression-bodied lambda functions in C# to make your code shorter and easier to read.
📋 What You'll Learn
Create a list of integers
Create an expression-bodied lambda to double a number
Use the lambda to create a new list with doubled values
Print the new list
💡 Why This Matters
🌍 Real World
Expression-bodied lambdas are used to write short, clear functions for data processing, event handling, and callbacks in many C# applications.
💼 Career
Knowing how to write concise lambdas helps you write cleaner code and work efficiently in C# development jobs.
Progress0 / 4 steps
1
Create a list of integers
Create a list of integers called numbers with these exact values: 1, 2, 3, 4, 5
C Sharp (C#)
Hint
Use List<int> and initialize it with the values inside curly braces.
2
Create an expression-bodied lambda to double a number
Create an expression-bodied lambda called doubleNumber that takes an int parameter n and returns n * 2
C Sharp (C#)
Hint
Use Func<int, int> and the lambda arrow => with a single expression.
3
Use the lambda to create a new list with doubled values
Create a new list of integers called doubledNumbers by using numbers.ConvertAll with the doubleNumber lambda
C Sharp (C#)
Hint
Use ConvertAll method on the numbers list and pass doubleNumber as the converter.
4
Print the new list
Use a foreach loop to print each number in doubledNumbers on its own line
C Sharp (C#)
Hint
Use foreach (int num in doubledNumbers) and inside the loop use Console.WriteLine(num);.
Practice
(1/5)
1. What is the main purpose of using an expression-bodied lambda in C#?
easy
A. To write a short function with a single expression without braces or return keyword
2. Which of the following is the correct syntax for an expression-bodied lambda that adds two integers a and b?
easy
A. (a, b) => a + b
B. (a, b) => a + b;
C. (a, b) => { return a + b; }
D. (a, b) => { a + b }
Solution
Step 1: Identify expression-bodied lambda syntax
Expression-bodied lambdas use => followed by a single expression without braces or return keyword.
Step 2: Check each option
(a, b) => a + b correctly uses (a, b) => a + b without braces or return. (a, b) => { return a + b; } uses braces and return (not expression-bodied). (a, b) => a + b; has a semicolon after expression (not needed). (a, b) => { a + b } uses braces without return (invalid).
Hint: No braces or return keyword in expression-bodied lambdas [OK]
Common Mistakes:
Adding braces and return keyword
Including semicolon after expression
Using braces without return keyword
3. What is the output of the following C# code?
Func<int, int> square = x => x * x;
Console.WriteLine(square(4));
medium
A. 8
B. 4
C. 16
D. Compilation error
Solution
Step 1: Understand the lambda function
The lambda expression x => x * x defines a function that returns the square of x.
Step 2: Evaluate the function call
Calling square(4) computes 4 * 4 = 16.
Final Answer:
16 -> Option C
Quick Check:
4 squared = 16 [OK]
Hint: Multiply input by itself to get square [OK]
Common Mistakes:
Confusing output with input
Expecting compilation error
Misreading the lambda expression
4. Identify the error in the following expression-bodied lambda:
Func<int, int> increment = x => { x + 1; };
medium
A. Semicolon after expression is invalid
B. Braces are not allowed in expression-bodied lambdas
C. Lambda must have two parameters
D. Missing return keyword inside braces
Solution
Step 1: Analyze the lambda syntax
The lambda uses braces, so it must have an explicit return statement to return a value.
Step 2: Identify the missing return
Inside braces, the expression x + 1 is evaluated but not returned, causing a compile error.
Final Answer:
Missing return keyword inside braces -> Option D
Quick Check:
Braces require return keyword [OK]
Hint: Use return inside braces or remove braces for expression-bodied lambda [OK]
Common Mistakes:
Assuming braces are disallowed
Thinking semicolon after expression is invalid
Expecting multiple parameters
5. Given a list of integers, which expression-bodied lambda correctly filters out even numbers and returns their squares?
var numbers = new List<int> {1, 2, 3, 4, 5};
var result = numbers.Where( /* lambda here */ ).Select(x => x * x).ToList();
hard
A. x => x % 2 == 0
B. x => x % 2 != 0
C. x => { return x % 2 != 0; }
D. x => { x % 2 != 0; }
Solution
Step 1: Understand filtering condition
We want to keep odd numbers, so the condition is x % 2 != 0.
Step 2: Choose correct lambda syntax
x => x % 2 != 0 uses expression-bodied lambda without braces, correctly returning the condition. x => x % 2 == 0 keeps even numbers (wrong). x => { return x % 2 != 0; } uses braces with return (valid but not expression-bodied). x => { x % 2 != 0; } uses braces without return (invalid).
Final Answer:
x => x % 2 != 0 -> Option B
Quick Check:
Filter odds with expression-bodied lambda [OK]
Hint: No braces and return for expression-bodied lambdas [OK]
Common Mistakes:
Using braces without return
Choosing wrong condition for filtering
Mixing expression-bodied with block-bodied syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.