One of the factors is that if you need to repeat the same results over and over, be sure to cache them in memory. This becomes a problem when using linq-to-sql or Entity Framework-ORM, which support deferred execution.
, IQueryable<SomeType>, , , ToList() foreach.