By designing your code for functional composition, you can keep it simple and targeted, making it easier to implement, understand, and test it. More sophisticated logic can be modeled by composing various building blocks of basic functionality — extension methods for collections, in the case of this post.
I've created a NuGet package for my ExtraLINQ project. Go grab it!
I've written a library called ExtraLINQ, which provides additional extension methods for working with .NET collections.