Why is LINQ not purely functional?

.net, c#, functional-programming, lambda, linq

Solution

LINQ is not a purely functional programming model as it permits side effects, is thus not referentially-transparent, which is a common definition of "purely functional".

Problem

So, why exactly is LINQ not considered purely functional? Is it because side effects can occur? Or is it maybe because it exists in an imperative environment?

Original source