Well...it is working - just not the way you think it should.
It is indeed sorting out all the distinct values, but using the default Comparer - so if you haven't written a Comparer for your class it will just use the HashCode method, which will return all the records - since they will be different in some way!
If you want to use Distinct by a property of your class (get all the instances that have different SubjectName values for example) then you need to supply a new Comparer when you do call Distinct.
MSDN can help:
http://msdn.microsoft.com/en-us/library/bb338049.aspx[
^]