One of the bugs I was recently asked to fix for an application required me to determine whether or not to display one of the members of a list. This proved somewhat challenging since the lists in question were heterogeneous (two difference subtypes of an abstract base class). It turned out that LINQ provides a nice solution to this sort of problem in the form of the OfType<T> method.
Given an IEnumerable collection with elements of multiple types, calling OfType<T> on the collection where T is the desired type will return a collection containing only elements of type T. Before learning about OfType<T>, I’d been using the Cast<T> method. This was fine as long as all the collection elements were of the type T I wanted. The moment this wasn’t the case, my LINQ query threw a cast exception. OfType<T> seems to work similarly to the “as” operator in C#, in that it doesn’t complain if a list element isn’t type T–it simply excludes it from the returned collection.