Sunday, May 12, 2013

Lambda expression in C#

In this post, I am explaining how to use Lambda expression in C#.

A lambda expression is an anonymous function that you can use to create delegates or expression tree types. All Lambda expressions use lambda operator =>
  • The left hand side of operator specified input parameter (if any)
  • Expression or statement is written on the right side of the operator
Lambda expression
x => x*x;

In the above Lambda expression, "x" on the left side is input parameter and on the right side is expression that returns the square value (x*x) of input "x".

Now lets take some example to understand more clearly how Lambda expressions are used

Example : Using Lambda expression with List to find out if input name exists in List

List<string> listNames = new List<string>();
listNames.Add("sandeep");
listNames.Add("Abhay");
listNames.Add("Ritesh");
string result = listNames.Find(name => name.Equals("sandeep"));

Example : Using Lambda expression, with collection to find out employee details passing Employee ID

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {        
        static void Main(string[] args)
        {
            EmpDetails empDetails = new EmpDetails();
            clsEmployee empDetail = empDetails.FindEmpByID("EMP001");
            if (empDetail == null)
                Console.Write("Employee does not exist");
            else
            {
                Console.Write("Emp ID : " + empDetail.EmpId);
                Console.Write( "\nEmp Name : " + empDetail.EmpName);
                Console.Write("\nEmp DOB : " + empDetail.DOB.ToString("dd/MM/yyyy"));
            }
            System.Threading.Thread.Sleep(5000);
        }

        public class clsEmployee
        {
            public string EmpId { get; set; }
            public string EmpName { get; set; }
            public DateTime DOB { get; set; }
            public DateTime DOJ { get; set; }
        }

        public class EmpDetails
        {
            //Creating object to 
            List<clsEmployee> listEmpCollection = new List<clsEmployee>();

            //Initializing Employee Details using constructor
            public EmpDetails()
            {
                AddEmpDetails();
            }

            //Adding Employee details in the employees listEmpCollection
            private void AddEmpDetails()
            {
                listEmpCollection.Add(new clsEmployee { EmpId = "EMP001", EmpName = "Sandeep", DOB = DateTime.Now.Date.AddYears(-28) });
                listEmpCollection.Add(new clsEmployee { EmpId = "EMP002", EmpName = "Abhay", DOB = DateTime.Now.Date.AddYears(-26) });
                listEmpCollection.Add(new clsEmployee { EmpId = "EMP003", EmpName = "Ritesh", DOB = DateTime.Now.Date.AddYears(-25) });
            }

            //Method to find the Employee details by pasing Emp Id using Lambda expression
            public clsEmployee FindEmpByID(string EmpId)
            {
                return listEmpCollection.Find(m => m.EmpId == EmpId);
            }
        }
    }
}

0 comments:

Post a Comment