I kind of grasp the whole delayed execution concept, but the following has me puzzled...
On a DataTable containing about 1000 rows, I call AsEnumerable(). I
Indeed you seem to have no clear idea what is execution of code and what is definition of the intent to (possibly) execute later when the results are actually used. I suggest reading up one this part of LINQ.
And possibly try executing both of your variants with a debugger attached so you can actually see what code is executing in which order and what is actually happening to your data. You might be in for a (big?) surprise here...