Lambda Expressions in C#
Lambda expressions are
anonymous functions that contain expressions or sequence of operators.
All lambda expressions
use the lambda operator =>, that can be read as “goes to” or “becomes”. The
left side of the lambda operator specifies the input parameters and the right
side holds an expression or a code block that works with the entry parameters.
Usually lambda expressions are used as predicates or in place of a delegates (a
type that references a method).
A lambda expression is an expression of any of the following two forms:
1. Expression lambda that has an
expression as its body:
Example
(input-parameters) =>
expression
2. Statement lambda that has a
statement block as its body:
Example
(input-parameters) => { <sequence-of-statements> }
Lambda Operator
Use the lambda declaration operator
=>
to separate the lambda's parameter list from its body.
To create a lambda
expression, you specify input parameters (if any) on the left side of the
lambda operator and an expression or a statement block on the other side.
In other words, the lambda
operator => divides a lambda expression into two parts. The left side is the
input parameter and the right side is the lambda body.
Example
using System;
using System.Collections.Generic;
namespace LegalManagementSystem.Models
{
public class CsharpnaijaLambda
{
public static void Main()
{
// sample list
of integers
List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6 };
//get all even
numbers from the sample list above
List<int> evenNumbers = list.FindAll(x
=> (x % 2) == 0);
Console.WriteLine("==============================================");
foreach (var num in evenNumbers)
{
Console.Write("{0} ", num);
}
Console.WriteLine("==============================================");
Console.ReadLine();
}
}
}
The preceding example
loops through the entire collection of numbers and each element (named x) is
checked to determine if the number is a multiple of 2 (using the Boolean
expression (x % 2) == 0).
Lambda Example with objects
using System;
using System.Collections.Generic;
using System.Linq;
namespace LegalManagementSystem.Models
{
public class CsharpnaijaLambda
{
public static void Main()
{
List<Cat> dogs = new List<Cat>() {
new Cat { Name = "Musty", Age = 4 },
new Cat { Name = "Hasdoo", Age = 0 },
new Cat { Name = "fancy", Age = 3 }
};
var names = dogs.Select(x => x.Name);
foreach (var name in names)
{
Console.WriteLine(name);
}
Console.ReadLine();
}
}
}
class Cat
{
public string Name { get; set; }
public int Age { get; set; }
}
We create a collection,
containing data from a certain class. In the example, from the class Cat (with
properties Name and Age), we want to get a list that contains all the cat's
names. With the keyword var, we tell the compiler to define the type of the
variable depending on the result that we assigned on the right side of the
equals sign.
Example of Lambda Expressions with Anonymous Types
using System;
using System.Collections.Generic;
using System.Linq;
namespace LegalManagementSystem.Models
{
public class CsharpnaijaLambda
{
public static void Main()
{
List<Cat> cats = new List<Cat>() {
new Cat { Name = "Fancy", Age = 4 },
new Cat { Name = "musty", Age = 0 },
new Cat { Name = "saki", Age = 3 }
};
var newCatsList = cats.Select(x => new {Age= x.Age, FirstLetter = x.Name[0] });
foreach (var item in newCatsList)
{
Console.WriteLine(item);
}
Console.Read();
}
}
}
class Cat
{
public string Name { get; set; }
public int Age { get; set; }
}
The newly created
collection newCatsList has elements of an anonymous type taking the properties
Age and FirstLetter as parameters.
Sorting using a lambda expression
The following is an example of sorting with a lambda
expression:
public class CsharpnaijaLambda
{
public static void Main()
{
List<Cat> cats = new List<Cat>() {
new Cat { Name = "Rex", Age = 4 },
new Cat { Name = "Sean", Age = 0 },
new Cat { Name = "Stacy", Age = 3 }
};
var newCatsList = cats.Select(x => new { x.Age, FirstLetter = x.Name[0] });
var sortedCats = cats.OrderByDescending(x => x.Age);
foreach (var cat in sortedCats)
{
Console.WriteLine(string.Format("Dog {0} is {1} years old.", cat.Name, cat.Age));
}
Console.Read();
}
}
References
1. c-sharpcorner
article accessed on 23/03/2020
2. Microsoft Documentation accessed on 23/03/2020
3. Tutorials Teacher
accessed on 23/03/2020
Comments
Post a Comment