I think Lambda expression are cool. Not only are cool, they are pretty powerful and can make your code a lot more readable and compact. I wrote this article here about how to simply use LINQ to Reflection to list the methods and types of an assembly. In this example I will use the same project, but modify it to use Lambda Expressions.
[sourcecode language="csharp" padlinenumbers="true"]
using System;
using System.Linq;
using System.Reflection;
using System.Linq.Expressions;
foreach (var odpTypes in assembly.GetTypes()
.Where(a => a.IsPublic))
{
Console.WriteLine("Type: {0}", odpTypes.FullName);
foreach (var odpMethods in odpTypes.GetMethods()
.Where(i => i.ReturnType.FullName != "System.String"))
{
Console.WriteLine(" {0}", odpMethods.ReturnType +
" " + odpMethods.Name);
}
}
[/sourcecode]
Lambda Expressions let me put where clauses, groupby clauses, etc… directly into my foreach statement. I can do this using the lambda operator =>, which means “goes to”. The a within my first Where clause represents the odpTypes variable. Any property or method that is accessible from that variable are accessible from the a too. The same goes for the i.
If you take a look at my other article I think you will find that using doing it this way is more friendly and readable.
Download the source