I generally prefer IEnumerable<T>
as well. The main thing is to ask yourself what actual (even minimum) functionality is being returned from the method (or passed to it, in the case of a method argument).
If all you need to do is enumerate over a result set, then IEnumerable<T>
does exactly that. No more, no less. This leaves you the flexibility to return more specific types in certain cases if need be without breaking the footprint of the method.