Lambdas can be emitted both as `Func` and C# with Example
`Expression` Assuming the following Person class: public class Person { public string Name { get; set; } public int Age { get; set; } } The following lambda: p => p.Age > 18 Can be passed as an argument to both methods: public void AsFunc(Func func) public void AsExpression(Expression> expr) Because the compiler is capable of transforming lambdas both to delegates and Expressions. Obviously, LINQ providers rely heavily on Expressions (exposed mainly through the IQueryable interface) in order to be able to parse queries and translate them to store queries.