Например, нужно написать 4 метода которые делают достаточно схожие действия. Пусть это будут арифметические действия с int. Но зачем писать реализацию всех методов, если можно передать лямбдой разные действия всего лишь в один:
class Program
{
static void Main ( string [ ] args )
{
int i;
i = SomeAction ( 10 , 20 , ( a , b ) => a + b );
i = SomeAction ( 10 , 20 , ( a , b ) => a - b );
i = SomeAction ( 10 , 20 , ( a , b ) => a / b );
i = SomeAction ( 10 , 20 , ( a , b ) => a * b );
}
static int SomeAction( int a1 , int a2 , Func<int,int,int> func )
{
return func ( a1 , a2 );
}
}
Пример не сильно отражает полезность, но стоит увеличить в методе количество строк кода и уверен, что смысл будет ясней.