Many people asked for the ForEach method - and it is really convenient (that is why we have one in MoreLINQ ). It is also potentially dangerous.
Most LINQs strongly discourage side effects. They are possible, but discouraged. This is why OrderBy etc. Return new collections, not sort existing ones.
Now consider ForEach - this is an "action", not a function, because it returns nothing. If it has no side effects, this is completely pointless! Thus, this runs counter to part of the LINQ philosophy - it basically does not approach things in a functional style.
I am not trying to make a case for or against, in fact - in practice, I think it is a useful thing, and I am not surprised that this is in many libraries, etc. This is a very obvious pseudo-operator to add. Just think about what you are doing and pay attention to the fact that you are introducing side effects. This is a kind of boundary between the LINQ functional style and the more imperative coding style.
Jon skeet
source share