LINQ: From a list of type T, retrieve only objects of a certain subclass S
you can do this: IList<Person> persons = new List<Person>(); public IList<T> GetPersons<T>() where T : Person { return persons.OfType<T>().ToList(); } IList<Student> students = GetPersons<Student>(); IList<Teacher> teacher = GetPersons<Teacher>(); EDIT: added the where constraint.