I am using anonymous functions in my projects no less. And till know I was thinking that, C# compiler generates just a method using the code used for the anonymous method
If there is nothing to capture it C# compiler will create private method in the class, if you have variables in closure - inner class will be created.
Covered in details in Chapter 12 - Delegates and Lambda Expressions
int local = 42;
...Where(value => {return true;})... // private method
...Where(value => { return value == local;})... // class