(Sorry for nipticking, the reason I'm pointing this out because people get confused about the unfortunate Linq terminology all the time).
(Sorry for nipticking, the reason I'm pointing this out because people get confused about the unfortunate Linq terminology all the time).
IEnumerable's extensions are mostly iterators over sequences.
You've just described how compilers work, minus optional attempts at optimization and optional excess passes. Most of which take place either after the expression tree has been generated, or somewhere during the conversion process. Therefore I'd call what you've described "compilation".
I believe that the point of author was that any time you are iterating over a list, you should really think about whether you can replace the iteration with a LINQ query. It really doesn't matter whether the list being iterated is an underlying list of objects, a table in an RDBMS, etc.
I believe that this is not the case if you are using LINQ to Objects unless you stick an explicit cast in there somewhere, but I could be wrong. I think that if you simply use the LINQ extension methods on an in-memory IEnumerable, they are simple method calls and involve no compilation to an expression tree.