From time to time I encounter people who attempt to express an API in terms of IQueryable>. That's almost always a bad idea. In this post, I'll explain why.
In short, the IQueryable> interface is one of the best examples of a Header Interface that .NET has to offer. It's almost impossible to fully implement it.
Please note that this post is about the problematic aspects of designing an API around the IQueryable> interface. It's not an attack on the interface itself, which has its place in the BCL. It's also not an attack on all the wonderful LINQ methods available on IEnumerable>.