В .NET 4.0 есть встроенный метод делегата:
public delegate TResult Func<in T, out TResult>(T arg);
Используется в методах расширения LINQ, например:
IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
Я не совсем понимаю, что такое делегат Func, почему следующее лямбда-выражение ему соответствует:
// p is a XElement object
p=>p.Element("firstname").Value.StartsWith("Q")