No need for a lambda!
Chapter 9: Lambda expressions and expression trees: 9.2.1
Created: 13/05/2008
Last updated: 13/05/2008
The code in listing 9.4 can be abbreviated even further than just removing the braces from round the body of the lambda expression. We don't need a lambda expression at all - we can use a simple method group conversion, converting this:
Action<Film> print = film => Console.WriteLine(film);
to this:
Action<Film> print = Console.WriteLine;
Of course as it's now so brief, we're not getting as much benefit from the extra variable. We can eliminate it completely, leaving this as the rest of the listing:
films.ForEach(Console.WriteLine);
films.FindAll(film => film.Year < 1960)
.ForEach(Console.WriteLine);
films.Sort((f1,f2) => f1.Name.CompareTo(f2.Name));
films.ForEach(Console.WriteLine);
It's a judgement call as to which form is most readable - I quite like keeping the extra variable - but it's worth taking note of this. When you write a "simple" lambda expression, just think that it might not need to be a lambda at all. I'll readily admit this possibility had completely passed me by in this case - thanks are due to Joe Albahari for pointing it out.