I think you misunderstood something. Request Expression:
var evens = from n in nums where n % 2 == 0 select n;
not compiling:
var evens = nums.Where(n => n % 2 == 0);
Rather, two lines of code are compiled directly into CIL. It so happens that they compile (efficiently) an identical CIL. The compiler can convert the request into an intermediate form during the analysis of the request code, but the end result is, of course, CIL.
source share