IEnumerables and LINQ are used to create the selection chain. Before you start iterating, nothing is done (other than creating a selection chain).
This seems magical because it dramatically improves performance, because it takes several iterations of the list to achieve the same with lists.
But when you begin to repeat the enumeration several times, you buy LINQ elegance with several operations, which reduces the efficiency of your work to zero or lower.
In other words: convert the linq expression to an array and continue.
var Results = (from results in db.FindWords(term) orderby results.word select results.word).Take(100).ToArray();
Now you can count iterations without losing performance.
source share